每半年用累积总和重新采样

时间:2018-10-21 22:50:44

标签: python pandas pandas-groupby

我有一个数据框,其中包含每月数据,例如:

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个累加总和。我在做什么错了?

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()

致谢