如何按月从庞大数据框汇总付款值?

时间:2018-05-29 22:49:09

标签: python pandas dataframe group-by pandas-groupby

如何按月和按日期汇总此数据框中的值:

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

1 个答案:

答案 0 :(得分:1)

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

  • pd.Grouperfreq='M'一起使用时,groupby索引将成为每个月的最后一天。
  • 要按天分组,不需要转换为pd.Grouper对象,但如果您愿意,可以pd.Grouper使用freq='D',并过滤掉NaN个值。< / LI>

按月分组

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