熊猫:带有移动窗口的累积总和(下一行和上一行)

时间:2019-01-21 09:47:16

标签: python pandas cumsum

我有以下数据集:

date     sales
201201   5
201202   5
201203   5
201204   5
201205   5
201206   5
201207   5
201208   5
201209   5
201210   5
201211   5
201212   5
201301   100
201302   100

我想计算从开始实际日期+ 12个月

的累计销售总额

所以在这里:

date     sales   expected
201201   5       60
201202   5       160
201203   5       260
201204   5       260 
201205   5       260
201206   5       260
201207   5       260
201208   5       260
201209   5       260
201210   5       260
201211   5       260
201212   5       260
201301   100     260
201302   100     260

根据这个问题How to compute cumulative sum of previous N rows in pandas?,我尝试了:

df['sales'].rolling(window=12).sum()

但是我正在寻找更多类似这样的东西:

df['sales'].rolling(window=['unlimited preceding, 11 following']).sum()

1 个答案:

答案 0 :(得分:1)

直接使用cumsum来感谢{{1}来shift,而不是使用11来填充ffill之前的值:

NaN

现在:

df['expected'] = df['sales'].cumsum().shift(-11).ffill()

是:

print(df)