如何按月和按日期汇总此数据框中的值:
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
答案 0 :(得分:1)
这是一个解决方案。几点需要注意:
pd.Grouper
与freq='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