Я думаю, вам нужно Series.unstack
, если df
равно DataFrame with MultiIndex
:
#e.g. possible created df
df = df.groupby(['id', 'week']).sum()
print (df.index)
MultiIndex([(4, 35),
(4, 36),
(4, 40)],
names=['id', 'week'])
df1 = df['duration'].unstack()
print (df1)
week 35 36 40
id
4 7.0 2.0 5.0
Если нужно id
в столбец:
df1 = df['duration'].unstack().reset_index().rename_axis(None, axis=1)
print (df1)
id 35 36 40
0 4 7.0 2.0 5.0
Альтернатива - при необходимости агрегирование sum
:
df1 = df.pivot_table(index='id', columns='week', values='duration', aggfunc='sum')
df1 = df1.reset_index().rename_axis(None, axis=1)