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 шт):
я так понимаю, речь идет о кумулятивной сумме... имеем датасет:
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