Рекурсивное значение в Dataframe - PullRequest
2 голосов
/ 17 февраля 2020

У меня есть кое-что, что меня некоторое время беспокоило.

У меня есть Dataframe, который выглядит примерно так:

           Amount  Balance       Date                           Text
90    -442.378339     5000 2018-02-12     PS Bar               04066
502   -183.229472     5000 2018-08-14               VDK EUR    39,95
957    -35.117568     5000 2019-01-28  Fakta Strandlodsve )))) 59260
1334   -15.234783     5000 2019-06-28                          Rente
1867  2934.846978     5000 2019-12-09           Netbank overf�rsel
2304   -30.299886     5000 2019-05-21            MobilePay: Cathrine
2341    21.209920     5000 2019-06-03            MOBILEPAY: KRISTIAN
2357   -90.505760     5000 2019-06-04     DK-NOTA68957 NETTO GODTHÅB
2447  -182.799214     5000 2019-07-03               Forretning: REAL
2955  -121.199545     5000 2019-12-30     DK-NOTA17767 WANNASPORT.DK

Я хочу обновить столбец Balance на основе столбец Amount. Баланс должен начинаться с 5000, но для второй строки он должен составлять 5000 - 442,378339 = 4557,62, а для третьей строки - 4557,62 - 183,229472 = 4374,39.

Я пытался df['Balance'] = df['Balance'] + df['Amount'].shift(1)

Вторая строка верна, но после этого она просто продолжает принимать 5000, а не предыдущее вычисленное значение Balance.

1 Ответ

1 голос
/ 17 февраля 2020

Давайте использовать cumsum в столбце «Сумма»:

Попробуйте:

df['Balance'] + df['Amount'].cumsum()

Вывод:

90      4557.621661
502     4374.392189
957     4339.274621
1334    4324.039838
1867    7258.886816
2304    7228.586930
2341    7249.796850
2357    7159.291090
2447    6976.491876
2955    6855.292331
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...