Я использую этот фрейм данных:
Fruit Date Name Number
Apples 10/6/2016 Bob 7
Apples 10/6/2016 Bob 8
Apples 10/6/2016 Mike 9
Apples 10/7/2016 Steve 10
Apples 10/7/2016 Bob 1
Oranges 10/7/2016 Bob 2
Oranges 10/6/2016 Tom 15
Oranges 10/6/2016 Mike 57
Oranges 10/6/2016 Bob 65
Oranges 10/7/2016 Tony 1
Grapes 10/7/2016 Bob 1
Grapes 10/7/2016 Tom 87
Grapes 10/7/2016 Bob 22
Grapes 10/7/2016 Bob 12
Grapes 10/7/2016 Tony 15
Я хочу объединить это по имени, а затем по фруктам, чтобы получить общее количество фруктов по названию.
Bob,Apples,16 ( for example )
Я попытался сгруппировать по Имени и Фруктам, но как узнать общее количество фруктов.
Number
?Также вы можете использовать функцию agg,
источник
Series
тогда как другой возвращаетGroupBy
объект.DataFrame
вместо этого получить объект (как в принятом ответе), используйте двойные квадратные скобки'Number'
, то есть:df.groupby(['Name', 'Fruit'])[['Number']].agg('sum')
Если вы хотите сохранить исходные столбцы
Fruit
иName
, используйтеreset_index()
. В противном случаеFruit
иName
станет частью индекса.Как видно из других ответов:
источник
Оба других ответа выполняют то, что вы хотите.
Вы можете использовать
pivot
функциональность, чтобы расположить данные в красивой таблицеисточник
Вы можете выбрать разные столбцы для суммирования чисел.
источник
Вы можете установить
groupby
столбец наindex
затем сsum
помощьюlevel
источник
Вариация функции .agg (); предоставляет возможность (1) сохранять тип DataFrame, (2) применять средние значения, числа, суммирования и т. д. и (3) позволяет группировать по нескольким столбцам, сохраняя разборчивость.
используя ваши ценности ...
источник