Я думаю, вам нужно создать новые имена столбцов от cumcount
в новую колонку, а затем использовать pivot
:
print (df)
Date Lag
0 d1 20
1 d1 30
2 d1 40
3 d2 10
4 d2 50
df['g'] = df.groupby('Date')['Lag'].cumcount()
df = df.pivot(index='Date', columns='g', values='Lag')
print (df)
g 0 1 2
Date
d1 20.0 30.0 40.0
d2 10.0 50.0 NaN
Также вы можете изменить имена столбцов:
df['g'] = 'Col' + df.groupby('Date')['Lag'].cumcount().astype(str)
print (df)
Date Lag g
0 d1 20 Col0
1 d1 30 Col1
2 d1 40 Col2
3 d2 10 Col0
4 d2 50 Col1
df = df.pivot(index='Date', columns='g', values='Lag')
print (df)
g Col0 Col1 Col2
Date
d1 20.0 30.0 40.0
d2 10.0 50.0 NaN
Спасибо за редактирование. Выучил :) –