Вы на правильном пути:
# group
df['idx'] = df.groupby('Date').cumcount()
# set index and unstack
new = df.set_index(['idx','Date', 'SubjectID']).unstack(level=[0,1])
# drop idx column
new.columns = new.columns.droplevel(1)
new.columns = [f'{val}_{date}' for val, date in new.columns]
Я думаю, что это ваш ожидаемый результат
Использование map
похоже, что это будет немного быстрее:
Вот пример тестирования 50 000 строк:
#data
data = pd.DataFrame(pd.date_range('2000-01-01', periods=50000, freq='D'))
data['a'] = list('abcd')*12500
data['b'] = 2
data['c'] = list('ABCD')*12500
data.rename(columns={0:'date'}, inplace=True)
# list comprehension:
%%timeit -r 3 -n 200
new = data.set_index(['a','date','c']).unstack(level=[0,1])
new.columns = new.columns.droplevel(0)
new.columns = [f'{x}_{y}' for x,y in new.columns]
# 98.2 ms ± 13.3 ms per loop (mean ± std. dev. of 3 runs, 200 loops each)
# map with join:
%%timeit -r 3 -n 200
data['date'] = data['date'].astype(str)
new = data.set_index(['a','date','c']).unstack(level=[0,1])
new.columns = new.columns.droplevel(0)
new.columns = new.columns.map('_'.join)
# 84.6 ms ± 3.87 ms per loop (mean ± std. dev. of 3 runs, 200 loops each)
Java зависимости от модуля EE решил бы эту проблему. Вы уже сделали задачу извлечения Ваших общих классов в его собственный проект, возможно потому что другие проекты зависят от этих классов. Так или иначе необходимо будет удостовериться, что это - Служебный проект (появляется под Java EE в мастерах проекта), и не только простой проект Java. Тот, который сделан, можно продолжить добавлять Служебный проект к пути сборки (путь времени компиляции), поскольку Вы выяснили.
Дополнительный (заключительный) шаг должен установить Java зависимость от модуля EE между Вашим Динамическим веб-проектом и общей библиотекой, которая заставляет классы утилиты быть помещенными в СЕТЬ-INF\lib во время развертывания, и даже во время экспорта ВОЙНЫ. Для этого посетите свойства динамического веб-проекта и обзор к Java зависимости от модуля EE. Удостоверьтесь, что Ваш служебный проект выбран здесь. Повторно развертывайте/публикуйте свое приложение, и необходимо быть хорошими для движения.