我对 pandas 中的 groupby() 有疑问
如果我有一个像"df"这样的DataFrame
user day click
0 U1 Mon 15
1 U2 Mon 7
2 U1 Wed 15
3 U3 Tue 21
4 U2 Tue 15
5 U2 Tue 10
当我使用 df.groupby(['user', 'day']).sum()
会是
click
user day
U1 Mon 15
Tue NaN
Wed 15
U2 Mon 7
Tue 25
Wed NaN
U3 Mon NaN
Tue 21
Wed NaN
我怎样才能得到这样的DataFrame
day Mon Tue Wed
user
U1 15 NaN 15
U2 7 25 NaN
U3 NaN 21 NaN
表示将一列转换为DataFrame的列名。
有什么方法可以做到这一点?
请您参考如下方法:
使用以天为列的数据透视函数并填充点击次数。
df.groupby(['user', 'day']).sum().reset_index()\
.pivot(index='user',columns='day',values='click')
Out[388]:
day Mon Tue Wed
user
U1 15.0 NaN 15.0
U2 7.0 25.0 NaN
U3 NaN 21.0 NaN
或者你可以只重置二级索引,这样你就不需要在pivot函数中指定索引列。
df.groupby(['user', 'day']).sum().reset_index(level=1)\
.pivot(columns='day',values='click')
