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()
→ Ссылка