pandas rolling cumsum over the trailing n elements

一曲冷凌霜 提交于 2019-12-01 06:49:00

问题


Using pandas, what is the easiest way to calculate a rolling cumsum over the previous n elements, for instance to calculate trailing three days sales:

df = pandas.Series(numpy.random.randint(0,10,10), index=pandas.date_range('2020-01', periods=10))
df
2020-01-01    8
2020-01-02    4
2020-01-03    1
2020-01-04    0
2020-01-05    5
2020-01-06    8
2020-01-07    3
2020-01-08    8
2020-01-09    9
2020-01-10    0
Freq: D, dtype: int64

Desired output:

2020-01-01     8
2020-01-02    12
2020-01-03    13
2020-01-04     5
2020-01-05     6
2020-01-06    13
2020-01-07    16
2020-01-08    19
2020-01-09    20
2020-01-10    17
Freq: D, dtype: int64

回答1:


You need rolling.sum:

df.rolling(3, min_periods=1).sum()
Out: 
2020-01-01     8.0
2020-01-02    12.0
2020-01-03    13.0
2020-01-04     5.0
2020-01-05     6.0
2020-01-06    13.0
2020-01-07    16.0
2020-01-08    19.0
2020-01-09    20.0
2020-01-10    17.0
dtype: float64

min_periods ensures the first two elements are calculated, too. With a window size of 3, by default, the first two elements are NaN.



来源:https://stackoverflow.com/questions/44221709/pandas-rolling-cumsum-over-the-trailing-n-elements

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!