我有一系列类似于此表的事务:
ID Customer Date Amount
1 A 6/12/2018 33,223.00
2 A 9/20/2018 635.00
3 B 8/3/2018 8,643.00
4 B 8/30/2018 1,231.00
5 C 5/29/2018 7,522.00
不过,我需要得到过去六个月的平均金额(截至今天)
我用的是
df.groupby('Customer').resample('W')['Amount'].sum()
得到这样的结果:
CustomerCode PayDate
A 2018-05-21 268
2018-05-28 0.00
2018-06-11 0.00
2018-06-18 472,657
2018-06-25 0.00
然而,使用这个解决方案,我只能得到客户有金额的日期范围。我需要延长每个客户的周数,这样我就可以得到六个月的整个范围(以周为单位)。在本例中,我需要为客户A获取从“2018-04-05”这一周(从今天算起正好是六个月前)到今天这一周的数据(因为没有金额,所以当然填0)
重采样非常灵活。要获得6个月的金额而不是当前的周金额,您需要的是:
月底分组;月初为
'6MS'
。你知道吗有关可用频率的更多文档,请参见: http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases
这是我找到的解决问题的办法。首先,我创建我想要的日期(过去六个月,但以周为单位)
然后我使用客户的产品和日期创建一个多索引。你知道吗
然后,我使用新创建的多索引重新索引df,最后,用零填充缺少的值。你知道吗
相关问题 更多 >
编程相关推荐