Cumsum Reset на основе состояния в Пандах - PullRequest
0 голосов
/ 31 октября 2018

Мой вопрос очень похож на Cumsum в группе и сбрасывается при условии в пандах и Pandas: Cumsum в каждой категории на основе дополнительного условия , но они не совсем меня туда привели моим условным требованиям. У меня есть фрейм данных, который выглядит следующим образом:

  TransactionId     Delta
          14          2
          14          3
          14          1
          14          2
          15          4
          15          2
          15          3

Я хочу создать еще один столбец "Cumulative", который вычисляет сумму Delta для каждого TransactionId. Таким образом, результат будет выглядеть так:

  TransactionId     Delta    Cumulative
          14          2          2
          14          3          5
          14          1          6
          14          2          8
          15          4          4
          15          2          6
          15          3          9

У меня есть условие для проверки настройки равенства TransactionId:

c1 = df.TransactionId.eq(df.TransactionId.shift())

Но я не могу понять, как добавить значение Delta к предыдущей накопленной строке.

1 Ответ

0 голосов
/ 31 октября 2018

Использование groupby.cumsum:

df['Cumulative'] = df.groupby('TransactionId')['Delta'].cumsum()

print (df)

  TransactionId  Delta  Cumulative
0       14         2       2
1       14         3       5
2       14         1       6
3       14         2       8
4       15         4       4 
5       15         2       6 
6       15         3       9
...