Скользящее вычисление панд с окном, основанным на значениях вместо количества
я ищу способ сделать что-то вроде различныхrolling_*
функцииpandas
, но я хочу, чтобы окно скользящего вычисления определялось диапазоном значений (скажем, диапазоном значений столбца DataFrame), а не количеством строк в окне.
В качестве примера, предположим, у меня есть эти данные:
>>> print d
RollBasis ToRoll
0 1 1
1 1 4
2 1 -5
3 2 2
4 3 -4
5 5 -2
6 8 0
7 10 -13
8 12 -2
9 13 -5
Если я сделаю что-то вродеrolling_sum(d, 5)
Я получаю скользящую сумму, в которой каждое окно содержит 5 строк. Но то, что я хочу, - это скользящая сумма, в которой каждое окно содержит определенный диапазон значенийRollBasis
, То есть яя хотел бы иметь возможность сделать что-то вродеd.roll_by(sum, 'RollBasis', 5)
и получить результат, в котором первое окно содержит все строки, чьиRollBasis
между 1 и 5, тогда второе окно содержит все строки, чьиRollBasis
между 2 и 6, то третье окно содержит все строки, чьиRollBasis
между 3 и 7 и т. д. Окна не будут иметь одинаковое количество строк, но диапазонRollBasis
значения, выбранные в каждом окне, будут одинаковыми. Таким образом, вывод должен быть таким:
>>> d.roll_by(sum, 'RollBasis', 5)
1 -4 # sum of elements with 1