pandas中的条件聚合

pandas中的条件聚合

我有一个这样的数据框:

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/

10-12 18:38