Python, Pandas сумма данной ячейки и ячеек, находящихся выше данной

У меня есть таблица с тремя столбцами "Data", "Puck" (в "Puck" разность между забитыми и пропущенными по дням шайбам, естественно если больше пропускали, то число отрицательное). Таблица отсортирована по датам по возрастанию, меня интересует, как я могу найти сумму самой ячейки в столбце "Puck" со всеми остальными, стоящими выше данной (сумма всего столбца мне не нужна). Т.е. мне нужно получить такую же таблицу, только в столбце "Puck" будет разность не в определенный день, а в сравнении с предыдущими (в первый день забито на 3 больше, чем пропущено - разность 3, на второй день пропустили на 2 больше, чем забили - итого разность 1 и т.д.). Если мы будем переписывать данные в этой же таблице поочередно перебирая ячейки, то можно просто находить сумму данной и предыдущей, но я не совсем понимаю как это осуществить. Заранее спасибо за помощь.

исходные данные

Data Puck
2008-09-03 -1
2008-09-05 -2
2008-09-07 1
2008-09-11 4
2008-09-13 -1
2008-09-15 -1

желаемый результат

Data Puck
2008-09-03 -1
2008-09-05 -3
2008-09-07 -2
2008-09-11 2
2008-09-13 1
2008-09-15 0

Ответы (1 шт):

Автор решения: strawdog

я так понимаю, речь идет о кумулятивной сумме... имеем датасет:

import pandas as pd
import numpy as np
np.random.seed(108)
df = pd.DataFrame(np.random.randint(-3, 5, size=10), index = pd.date_range(start="2022-01-01", end="2022-01-10", freq="D"), columns=["Puck"])
            Puck
2022-01-01     0
2022-01-02     4
2022-01-03    -2
2022-01-04     0
2022-01-05     3
2022-01-06     3
2022-01-07    -1
2022-01-08     1
2022-01-09    -1
2022-01-10    -2

далее делаем простую агрегацию:

df["new"] = df["Puck"].cumsum()

получаем df:

            Puck  new
2022-01-01     0    0
2022-01-02     4    4
2022-01-03    -2    2
2022-01-04     0    2
2022-01-05     3    5
2022-01-06     3    8
2022-01-07    -1    7
2022-01-08     1    8
2022-01-09    -1    7
2022-01-10    -2    5
→ Ссылка