Функция прокатки панд со смещенными индексами - PullRequest
0 голосов
/ 18 мая 2018

Код

s = pd.Series([0,1,2,3,4])
sr = s.rolling(3)
sr.apply(np.sum)

возвращает ряд с индексами [0,1,2,3,4] и значениями [NaN, NaN, 3, 6, 9].Есть ли быстрый взлом, специально с использованием функций прокручивания панд, , чтобы он возвращал скользящую сумму из после 3 индексов, то есть, чтобы значения серии были [3, 6, 9, NaN, NaN]?

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Вам нужно numpy.roll ()

s = pd.Series([0,1,2,3,4])
sr = s.rolling(3)
pd.Series(np.roll(sr.apply(np.sum),3))

Вывод:

0    3.0
1    6.0
2    9.0
3    NaN
4    NaN
dtype: float64
0 голосов
/ 19 мая 2018

Единственная разница - сдвиг на -2:

w = 3
s.rolling(w).sum().shift(-w + 1)

0    3.0
1    6.0
2    9.0
3    NaN
4    NaN
dtype: float64
0 голосов
/ 18 мая 2018

Добавление iloc[::-1]

s = pd.Series([0,1,2,3,4])
sr = s.iloc[::-1].rolling(3)
sr.sum().iloc[::-1]

0    3.0
1    6.0
2    9.0
3    NaN
4    NaN
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...