Метод cumsum
Метод cumsum класса GroupBy применяется к группам
и возвращает кумулятивную (нарастающую) сумму значений внутри
каждой группы. Метод не требует дополнительных параметров и
работает с числовыми столбцами. Результатом является объект
того же размера, что и исходный, с кумулятивными суммами
в разрезе групп.
Синтаксис
df.groupby(by).cumsum()
Пример
Давайте сгруппируем данные по столбцу 'a' и вычислим кумулятивную сумму для столбца 'b':
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
res = df.groupby('a').cumsum()
print(res)
Результат выполнения кода:
b
0 10
1 30
2 30
3 70
4 50
Пример
Кумулятивная сумма может быть вычислена для нескольких числовых столбцов одновременно:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50],
'c': [1, 2, 3, 4, 5]
})
res = df.groupby('a')[['b', 'c']].cumsum()
print(res)
Результат выполнения кода:
b c
0 10 1
1 30 3
2 30 3
3 70 7
4 50 5
Пример
Метод корректно обрабатывает группы с одним элементом, возвращая само значение без изменений:
import pandas as pd
df = pd.DataFrame({
'a': ['x', 'x', 'y', 'z', 'z'],
'b': [5, 15, 25, 35, 45]
})
res = df.groupby('a').cumsum()
print(res)
Результат выполнения кода:
b
0 5
1 20
2 25
3 35
4 80