我有一个数据框,其中包含每月数据,例如:
Date Value
2016-12-01 0
2017-01-01 10
2017-02-01 20
2017-03-01 15
2017-04-01 25
2017-05-01 35
2017-06-01 1
2017-07-01 2
2018-08-01 3
2018-09-01 4
2018-10-01 5
2018-11-01 6
我想获取每个月的半年累计金额,但要在5月底而不是12月底。因此,一年内将有两个6个月的累计金额。因此输出应为:
Date Value
2016-12-01 0
2017-01-01 10
2017-02-01 30
2017-03-01 45
2017-04-01 70
2017-05-01 105
2017-06-01 1
2017-07-01 3
2018-08-01 6
2018-09-01 10
2018-10-01 15
2018-11-01 21
我尝试过:
import_monthly.groupby(by=[pd.Grouper(freq='2Q-MAY'), pd.Grouper(freq='A-MAY')]).cumsum()
但它将我的日期固定为2月17日和8月17日的累计金额,而不是5月17日和11月17日。它仍然在5月结束,因此即使对于这两个6个月的时间段,它也没有正确的2个累加总和。我在做什么错了?
答案 0 :(得分:0)
这个问题使我意识到,熊猫每季度固定的偏移量是变化无常的,我仍然不太了解它们的工作原理。基于this SO question and answer,我能够获得预期输出的唯一方法是在索引为5月1日或11月1日的第一行中添加一个虚拟值。根据该其他答案中的@chrisb,与以下事实有关:在偏移量pip install ara==0.14.6
中,在{em>乘以2Q-NOV
之前,计算/应用了锚点NOV
。
从您的DataFrame开始:
2
答案 1 :(得分:0)
我不知道这是否仍然有用,但是我用
达到了相同的结果。df.groupby(pd.Grouper(freq='Q')).cumsum().resample('Q').last()
致谢