Вычисление кумулятивной суммы в кадре данных pandas по определенным промежуткам

У меня есть фол. кадр данных:

            tot_pix  Season  caap_col    lamma     kite
datetime                                                  
2000-01-01   1914.0  2000.0       1.0  1.95025  117.737362
2000-01-04   1914.0  2000.0       1.0  1.95025  117.674177
2000-01-05   1914.0  2000.0       1.0  1.95025  117.995489
2001-01-04   1914.0  2001.0       1.0  1.95025  118.114809
2001-01-05   1914.0  2001.0       1.0  1.95025  118.160295

В кадре данных выше я хочу вычислить совокупную сумму столбца kite. Однако я хочу, чтобы совокупная сумма НЕ охватывала значения Season. Например. вывод с совокупной суммой для kite должен выглядеть так:

          tot_pix Season caap_col lamma kite
datetime                    
1/1/2000    1914    2000    1   1.95025 117.737362
1/4/2000    1914    2000    1   1.95025 235.411539
1/5/2000    1914    2000    1   1.95025 235.669666
1/4/2001    1914    2001    1   1.95025 118.114809
1/5/2001    1914    2001    1   1.95025 236.275104

Я могу вычислить совокупную сумму с помощью команды cumsum, как мне ограничить ее определенными диапазонами Season?


person user308827    schedule 24.06.2017    source источник


Ответы (1)


Вам нужно groupby + cumsum:

#if not sorted index with column Season
#df = df.sort_index(sort_remaining=True).sort_values('Season')

df['kite'] = df.groupby('Season')['kite'].cumsum()
print (df)
           tot_pix  Season  caap_col    lamma        kite
datetime                                                  
2000-01-01   1914.0  2000.0       1.0  1.95025  117.737362
2000-01-04   1914.0  2000.0       1.0  1.95025  235.411539
2000-01-05   1914.0  2000.0       1.0  1.95025  353.407028
2001-01-04   1914.0  2001.0       1.0  1.95025  118.114809
2001-01-05   1914.0  2001.0       1.0  1.95025  236.275104
person jezrael    schedule 24.06.2017