2016-10-07 40 views
19

Bu veri çerçevesi kullanıyorum:Pandalar grup tarafından ve toplamı

Ben isim için meyve toplam sayısını almak için meyve ile daha sonra adıyla bu toplu hale getirip istediğiniz
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) 

İsim ve Meyve ile gruplandırmayı denedim, ancak toplam meyve sayısını nasıl alabilirim? Sen groupby ve sum kullanabilirsiniz

cevap

24

kullanım toplamı() yöntemi

df.groupby(['Fruit','Name']).sum() 

Out[31]: 
       Number 
Fruit Name   
Apples Bob  16 
     Mike  9 
     Steve  10 
Grapes Bob  35 
     Tom  87 
     Tony  15 
Oranges Bob  67 
     Mike  57 
     Tom  15 
     Tony  1 
+1

'' groupby 'argüman listenizdeki sıraya göre verilmişse, veriler önce ad olarak gruplandırılmamış ve daha sonra her satıcının meyvesiyle gruplandırılmamış mıdır? –

+0

@p_sutherland Haklısınız, düzeltildiniz. –

+2

Pandalar 'Number' ismini yazmak istediğimi nereden biliyor? – Kingname

3

:

df.groupby(['Name', 'Fruit']).sum() 

       Number 
Name Fruit   
Bob Apples  16 
     Grapes  35 
     Oranges  67 
Mike Apples  9 
     Oranges  57 
Steve Apples  10 
Tom Grapes  87 
     Oranges  15 
Tony Grapes  15 
     Oranges  1 
6

Hem diğer cevaplar istediğini başarmak.

Sen sayılarını toplamak için farklı sütunlar seçebilir, güzel bir masa Ayrıca

df.groupby(['Fruit','Name'],as_index = False).sum().pivot('Fruit','Name').fillna(0) 



Name Bob  Mike Steve Tom Tony 
Fruit     
Apples 16.0 9.0  10.0 0.0  0.0 
Grapes 35.0 0.0  0.0  87.0 15.0 
Oranges 67.0 57.0 0.0  15.0 1.0 
6

Eğer agg fonksiyonunu kullanabilirsiniz içinde

df.groupby(['Name', 'Fruit'])['Number'].agg('sum') 
0
df.groupby(['Fruit','Name'])['Number'].sum() 

verileri düzenlemek için pivot işlevini kullanabilirsiniz .