Pandas groupby суммарная сумма

Я хотел бы добавить столбец суммарной суммы в свой кадр данных Pandas, чтобы:

Jack | Monday | 10 Jack | Tuesday | 20 Jack | Tuesday | 10 Jack | Wednesday | 50 Jill | Monday | 40 Jill Wednesday | 110 

будет выглядеть так:

 Jack | Monday | 10 | 10 Jack | Tuesday | 30 | 40 Jack | Wednesday | 50 | 100 Jill | Monday | 40 | 40 Jill | Wednesday | 40 | 150 

Я пробовал различные комбо df.groupby и df.agg(lambda x: cumsum(x)) безрезультатно. Заранее спасибо!

4 Solutions collect form web for “Pandas groupby суммарная сумма”

Это должно сделать это, нужно groupby() дважды.

 In [52]: print df name day no 0 Jack Monday 10 1 Jack Tuesday 20 2 Jack Tuesday 10 3 Jack Wednesday 50 4 Jill Monday 40 5 Jill Wednesday 110 In [53]: print df.groupby(by=['name','day']).sum().groupby(level=[0]).cumsum() no name day Jack Monday 10 Tuesday 40 Wednesday 90 Jill Monday 40 Wednesday 150 

Обратите внимание: результирующий DataFrame имеет MultiIndex .

Это работает в пандах 0.16.2

 In[23]: print df name day no 0 Jack Monday 10 1 Jack Tuesday 20 2 Jack Tuesday 10 3 Jack Wednesday 50 4 Jill Monday 40 5 Jill Wednesday 110 In[24]: df['no_cumulative'] = df.groupby(['name'])['no'].apply(lambda x: x.cumsum()) In[25]: print df name day no no_cumulative 0 Jack Monday 10 10 1 Jack Tuesday 20 30 2 Jack Tuesday 10 40 3 Jack Wednesday 50 90 4 Jill Monday 40 40 5 Jill Wednesday 110 150 

вы должны использовать

 df['cum_no'] = df.no.cumsum() 

http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.DataFrame.cumsum.html

Вместо df.groupby(by=['name','day']).sum().groupby(level=[0]).cumsum() (см. Выше) вы также можете сделать df.set_index(['name', 'day']).groupby(level=0, as_index=False).cumsum()

  • df.groupby(by=['name','day']).sum() фактически просто перемещает оба столбца в MultiIndex
  • as_index=False означает, что вам не нужно вызывать reset_index после этого
  • Основные панды: получить строку по значению индекса?
  • Как я могу сортировать в разделах, определенных одним столбцом, но оставить разделы, где они есть?
  • Почему сбор мусора настолько медленный?
  • Использование LabelEncoder Scikit правильно в нескольких программах
  • Как добавить легенду на графике барботажа Seaborn facetgrid
  • Ошибка значения в переменной multiparting xarray с массивом 2D numpy
  • В чем разница между NaN и None?
  • Как итеративно считать в Pandas Dataframe
  • сохранить pandas.Series график гистограммы в файл
  • Как правильно прочитать файл csv, если каждая строка содержит различное количество полей (число довольно большое)?
  • исключая строки из фрейма данных pandas на основе значения столбца, а не значения индекса
  • Python - лучший язык программирования в мире.