Результат python pandas groupby ()

У меня есть следующий кадр данных pandas python:

df = pd.DataFrame( { 'A': [1,1,1,1,2,2,2,3,3,4,4,4], 'B': [5,5,6,7,5,6,6,7,7,6,7,7], 'C': [1,1,1,1,1,1,1,1,1,1,1,1] } ); df ABC 0 1 5 1 1 1 5 1 2 1 6 1 3 1 7 1 4 2 5 1 5 2 6 1 6 2 6 1 7 3 7 1 8 3 7 1 9 4 6 1 10 4 7 1 11 4 7 1 

Я хотел бы иметь еще один столбец, хранящий значение суммы над значениями C для фиксированных (оба) A и B. То есть что-то вроде:

  ABCD 0 1 5 1 2 1 1 5 1 2 2 1 6 1 1 3 1 7 1 1 4 2 5 1 1 5 2 6 1 2 6 2 6 1 2 7 3 7 1 2 8 3 7 1 2 9 4 6 1 1 10 4 7 1 2 11 4 7 1 2 

Я пробовал с pandas groupby и это вроде как работы:

 res = {} for a, group_by_A in df.groupby('A'): group_by_B = group_by_A.groupby('B', as_index = False) res[a] = group_by_B['C'].sum() 

но я не знаю, как «получить» результаты от res в df упорядоченным образом. Был бы очень доволен любым советом по этому поводу. Спасибо.

3 Solutions collect form web for “Результат python pandas groupby ()”

Вот один из способов (хотя он считает, что это должно работать в одно время с применением, я не могу получить его).

 In [11]: g = df.groupby(['A', 'B']) In [12]: df1 = df.set_index(['A', 'B']) 

Функция group group по size является той, которую вы хотите, мы должны сопоставить ее с «A» и «B» в качестве индекса:

 In [13]: df1['D'] = g.size() # unfortunately this doesn't play nice with as_index=False # Same would work with g['C'].sum() In [14]: df1.reset_index() Out[14]: ABCD 0 1 5 1 2 1 1 5 1 2 2 1 6 1 1 3 1 7 1 1 4 2 5 1 1 5 2 6 1 2 6 2 6 1 2 7 3 7 1 2 8 3 7 1 2 9 4 6 1 1 10 4 7 1 2 11 4 7 1 2 

Вы также можете сделать один вкладыш, используя слияние следующим образом:

 df = df.merge(pd.DataFrame({'D':df.groupby(['A', 'B'])['C'].size()}), left_on=['A', 'B'], right_index=True) 

Вы также можете сделать один вкладыш, используя преобразование, применяемое к groupby:

 df['D'] = df.groupby(['A','B'])['C'].transform('sum') 
  • Значения Remap в столбце pandas с dict
  • Кодирование переменных с помощью Pandas TimeSeries
  • Pandas: Примените функцию через «Столбец A», одновременно прочитав «Столбец B»,
  • python / pandas: как объединить два фрейма данных в один с иерархическим индексом столбца?
  • Сравнение выборочного среднего и случайного ассортимента в Python
  • Импортировать несколько файлов csv в pandas и объединить в один DataFrame
  • Планирование кадров данных Pandas
  • DataFrame Panda - переименование нескольких одинаково названных столбцов
  • Python - лучший язык программирования в мире.