cumsum по определенным значениям
Подскажите, что-то не соображу)
temp = pd.DataFrame({'a': [1,1,1,1,2,2,2,2], 'b': [1,1,0,1,0,1,0,1)})
temp['sum'] = temp.b.cumsum()
temp
Вот код генерит сумму по столбцу 'b' для всех 'a'. А как посчитать отдельные суммы 'b' по 'a' = 1 и 'a' = 2 (значений много) те нужно получить столбец [1,2,2,3,0,1,1,2] Пробовал циклом перебирать 'a' не дождался.
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Всё довольно просто:
temp['sum'] = temp.groupby("a").cumsum()
temp
Вывод:
a b sum
0 1 1 1
1 1 1 2
2 1 0 2
3 1 1 3
4 2 0 0
5 2 1 1
6 2 0 1
7 2 1 2
Если после группировки останется не один столбец, то нужно будет указать ещё, какой столбец суммировать:
temp['sum'] = temp.groupby("a")["b"].cumsum()