Накопленная сумма столбца данных с перезапуском - PullRequest
0 голосов
/ 03 ноября 2018

Я хотел бы выполнить следующую функцию на фрейме данных.

Рассчитать совокупную сумму столбца, уведомление:

  1. Он просматривает только предыдущий индекс, не включая текущий, например, самый первый будет равен нулю, так как нет предыдущих данных для просмотра.

  2. Когда он не накапливается, например, приращение равно нулю, он перезапускает счет.

          Number  Cumulative
       0       1           0
       1       1           1
       2       1           2
       3       0           3
       4       0           0
       5       1           0
       6       1           1
       7       0           2
    

Я знаю, что есть расширяющаяся функция, но она не перезапускается, когда видит ноль

1 Ответ

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

IIUC, это работает, делая группы в соответствии с тем, был ли предыдущий ряд 0, затем получая совокупный счет:

>>> df
   Number
0       1
1       1
2       1
3       0
4       0
5       1
6       1
7       0

df['Cumulative'] = df.groupby(df.Number.shift().eq(0).cumsum()).cumcount()

>>> df
   Number  Cumulative
0       1           0
1       1           1
2       1           2
3       0           3
4       0           0
5       1           0
6       1           1
7       0           2

В качестве альтернативы, если вы действительно хотите cumsum, тогда примените cumsum с той же группировкой, что и выше, и сдвиньте ее на 1 вниз:

df['Cumulative '] = df.groupby(df.Number.eq(0).cumsum()).cumsum().shift().fillna(0)
>>> df
   Number  Cumulative 
0       1          0.0
1       1          1.0
2       1          2.0
3       0          3.0
4       0          0.0
5       1          0.0
6       1          1.0
7       0          2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...