我在pandas中有以下数据帧
ID Balance ATM_drawings Value
1 100 50 345
1 150 33 233
2 100 100 333
2 100 100 234
我想要所需格式的数据
ID Balance_mean Balance_sum ATM_Drawings_mean ATM_drawings_sum
1 75 250 41.5 83
2 200 100 200 100
我正在使用以下命令在pandas中执行此操作
df1= df[['Balance','ATM_drawings']].groupby('ID', as_index = False).agg(['mean', 'sum']).reset_index()
但是,它没有给出我想要的东西.
解决方法:
您可以使用字典为每个系列指定聚合函数:
d = {'Balance': ['mean', 'sum'], 'ATM_drawings': ['mean', 'sum']}
res = df.groupby('ID').agg(d)
# flatten MultiIndex columns
res.columns = ['_'.join(col) for col in res.columns.values]
print(res)
Balance_mean Balance_sum ATM_drawings_mean ATM_drawings_sum
ID
1 125 250 41.5 83
2 100 200 100.0 200
或者您可以通过dict.fromkeys定义d:
d = dict.fromkeys(('Balance', 'ATM_drawings'), ['mean', 'sum'])
标签:python,indexing,dataframe,pandas,pandas-groupby