How to compute cumulative sum of previous N rows in pandas?

cumsum, pandas, python

Solution

Call `rolling` with `min_periods=1` and `window=11` and `sum`:

In [142]:
df['A'].rolling(min_periods=1, window=11).sum()

Out[142]:
0       NaN
1      0.00
2      0.00
3      3.33
4     13.54
5     20.21
6     27.21
7     35.48
8     41.55
9     43.72
10    47.10
11    49.58
12    51.66
13    58.61
14    55.28
15    46.82
16    46.81
17    49.50
18    47.96
19    48.09
20    48.93
21    45.87
22    43.91
Name: A, dtype: float64

Problem

I am working with pandas, but I don't have so much experience. I have the following DataFrame: ``` A 0 NaN 1 0.00 2 0.00 3 3.33 4 10.21 5 6.67 6 7.00 7 8.27 8 6.07 9 2.17 10 3.38 11 2.48 12 2.08 13 6.95 14 0.00 15 1.75 16 6.66 17 9.69 18 6.73 19 6.20 20 3.01 21 0.32 22 0.52 ``` and I need to compute the cumulative sum of the previous 11 rows. When there is less than 11 previously, they remaining are assumed to be 0. ``` B 0 NaN 1 0.00 2 0.00 3 0.00 4 3.33 5 13.54 6 20.21 7 27.20 8 35.47 9 41.54 10 43.72 11 47.09 12 49.57 13 51.65 14 58.60 15 58.60 16 57.02 17 53.48 18 56.49 19 56.22 20 54.16 21 51.10 22 49.24 ``` I have tried: ``` df['B'] = df.A.cumsum().shift(-11).fillna(0) ``` However, this is not achieving what I want, but this is rotating the result of a cumulative sum. How can I achieve this?

Original source