如何从熊猫数据帧按月聚合付款值?



如何按月份和日期聚合此数据框中的值:

payout_date payout_value
2017-01-14  1
2017-01-14  30
2017-01-16  216
2017-02-17  23
2017-02-17  2
2017-03-19  745
2017-03-19  32
2017-03-20  11
2017-03-20  222
2017-03-21  4

对于我使用的每日汇总值

df.groupby('date').agg(['sum'])
payout_value
sum
date    
2017-01-14  31
2017-01-16  216
2017-02-17  25
2017-03-19  777
2017-03-20  233
2017-03-21  4

如何获取每月汇总payout value

payout_date payout_value
2017-01-14  247
2017-02-17  25
2017-03-19  1014

这是一种解决方案。需要注意的几点:

  • pd.Grouperfreq='M'一起使用时,groupby索引将成为每月的最后一天。
  • 对于按天分组,不需要转换为pd.Grouper对象,但如果需要,可以将pd.Grouperfreq='D'一起使用并筛选出NaN值。

按月分组

df['payout_date'] = pd.to_datetime(df['payout_date'])
grouper = pd.Grouper(key='payout_date', freq='M')
res1 = df.groupby(grouper)['payout_value'].sum().reset_index()
print(res1)
month  payout_value
0      1           247
1      2            25
2      3          1014

按天分组

res2 = df.groupby('payout_date', as_index=False)['payout_value'].sum()
print(res2)
payout_date  payout_value
0  2017-01-14            31
1  2017-01-16           216
2  2017-02-17            25
3  2017-03-19           777
4  2017-03-20           233
5  2017-03-21             4

最新更新