我有一个这样的数据框:
User ID Year Amount
A 2009 5
A 2010 6
A 2009 6
A 2010 1
B 2010 1
B 2009 1
B 2010 2
B 2010 5
我想总结每年用户的金额..并希望得到这样的结果:
Sum of amount
User 2009 2010
A 11 7
B 1 8
我只能处理这一年。像这样:
newdf= df.groupby('User ID')['Amount'].sum().reset_index()
答案 0 :(得分:2)
IIUC pivot_table
pd.pivot_table(df,index=['UserID'],columns=['Year'],values=['Amount'],aggfunc='sum')
Out[906]:
Amount
Year 2009 2010
UserID
A 11 7
B 1 8
答案 1 :(得分:2)
将rename
用于MultiIndex
的新级别,然后将列Year
添加到groupby
和unstack
。最后删除列名称添加rename_axis
:
newdf = (df.rename(columns={'Amount':'Sum of amount'})
.groupby(['User ID', 'Year'])
.sum()
.unstack()
.rename_axis((None, None), axis=1))
print (newdf)
Sum of amount
2009 2010
User ID
A 11 7
B 1 8
但如果没有必要重命名列,解决方案就是简化:
newdf= df.groupby(['User ID', 'Year']).sum().unstack()
print (newdf)
Amount
Year 2009 2010
User ID
A 11 7
B 1 8