Używam tej ramki danych:
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
Chcę to zagregować według nazwy, a następnie według owoców, aby uzyskać całkowitą liczbę owoców według nazwy.
Bob,Apples,16 ( for example )
Próbowałem pogrupować według nazw i owoców, ale jak uzyskać całkowitą liczbę owoców.
Number
?Możesz także skorzystać z funkcji agg,
źródło
Series
podczas gdy druga zwracaGroupBy
obiekt.DataFrame
zamiast tego uzyskać obiekt (jak w zaakceptowanej odpowiedzi), użyj podwójnych nawiasów kwadratowych wokół'Number'
, tj .:df.groupby(['Name', 'Fruit'])[['Number']].agg('sum')
Jeśli chcesz zachować oryginalne kolumny
Fruit
iName
, użyjreset_index()
. InaczejFruit
iName
staną się częścią indeksu.Jak widać w innych odpowiedziach:
źródło
Obie pozostałe odpowiedzi spełniają Twoje oczekiwania.
Możesz użyć tej
pivot
funkcji, aby uporządkować dane w ładnej tabeliźródło
Możesz wybrać różne kolumny, aby zsumować liczby.
źródło
Możesz ustawić
groupby
kolumnę, abyindex
następnie używaćsum
zlevel
źródło
Odmiana funkcji .agg (); zapewnia możliwość (1) zachowania typu DataFrame, (2) zastosowania średnich, zliczeń, sumowań itp. oraz (3) umożliwia grupowanie według wielu kolumn przy zachowaniu czytelności.
używając twoich wartości ...
źródło