我有一个这样的数据框:
Amount Month Type
15 201801 Sale
34 201801 Purchase
4 201801 Sale
86 201801 Purchase
23 201802 Sale
55 201802 Purchase
29 201802 Sale
...
我想按月汇总,以便得到:
总销售额:总和(类型=销售额的金额)
总销售额(连续):总和(月份采购总额:总和(类型=采购的金额)
采购总额(运行):总和(月份所以。。。像这样的:
Month TotalSales TotalSalesRun TotalPurch TotalPurchRun
201801 19 19 120 120
201802 52 71 55 175
我玩过一些东西,但我对lambda函数还不熟悉,我想这是我需要的地方。
最佳答案
我正在使用concat
s1=df.groupby(['Month','Type']).sum()
s2=s1.groupby(level=1).cumsum().add_prefix('running')
s=pd.concat([s1,s2],axis=1).unstack()
s.columns=s.columns.map('_'.join)
或者使用
pivot_table
s1=df.pivot_table(index='Month',columns='Type',values='Amount',aggfunc='sum')
Yourdf=pd.concat([s1,s1.cumsum().add_prefix('Rolling')],sort=False,axis=1)
Yourdf
Type Purchase Sale RollingPurchase RollingSale
Month
201801 120 19 120 19
201802 55 52 175 71
关于python - python/pandas中的条件聚合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55774651/