скользящая сумма столбца в кадре данных панд через переменные интервалы - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть список номеров индексов, которые представляют местоположения индексов для DF. list_index = [2,7,12]

Я хочу суммировать из одного столбца в DF, прокручивая каждое число в list_index и суммируя счетчики между индексными точками (и перезапуская счетчик в 0 в каждой индексной точке). Вот мини-пример.

enter image description here

Требуемый вывод находится в столбце OUTPUT, который увеличивается каждый раз, когда есть еще 1 от COL 1, и перезапускает счет в 0 на месте после числа в list_index.

Мне удалось заставить его работать с циклом, но в DF миллионы строк, и цикл запускается некоторое время. Кажется, что мне нужна лямбда-функция с суммой, но мне нужно ввести начальную и конечную точку в индексе.

Что-то вроде лямбды x: x.rolling (start_index, end_index) .sum ()? Может кто-нибудь помочь мне в этом.

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете попробовать накопительную сумму и получить только 1 информацию, связанную с данными, скользящая сумма с разными интервалами невозможна

a = df['col'].eq(1).cumsum()
df['output'] = a - a.mask(df['col'].eq(1)).ffill().fillna(0).astype(int)

Из:

    col output
0   0   0
1   1   1
2   1   2
3   0   0
4   1   1
5   1   2
6   1   3
7   0   0
8   0   0
9   0   0
10  0   0
11  1   1
12  1   2
13  0   0
14  0   0
15  1   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...