2016-04-01 20 views
1

Benim df1:nasıl Pandalar Veri Frame kullanarak, grup değerlerin toplamını() göstermek bir Pivot Tablo oluşturabilirsiniz?

   cnpj  num_doc bc_icms 
0 02817342000124 0000010154 17827.07 
1 54921580000189 0000112428 108000.00 
2 08953538000122 0000012865  232.00 
3 08953538000122 0000012865  239.00 
4 08953538000122 0000012865  215.00 
5 07374346000107 0000014224  320.12 
6 07374346000107 0000014231  385.04 
7 07374346000107 0000014263  401.28 
8 07374346000107 0000014279  391.26 
9 02364118000124 0000015263 37353.10 
10 02364118000124 0000015264 56214.14 

df1.dtypes çıktısı:

: Yani

cnpj  object 
num_doc  object 
bc_icms float64 
dtype: object 

.... ben şu soruyu cevaplamak için bir özet tablo oluşturmak çalışıyorum her cnpj için bc_icms arasında sum nedir?

indexes = [np.array(df1['cnpj']), np.array(df1['num_doc'])] 
pt1 = pd.DataFrame(df1['bc_icms'], index=indexes) 
print pt1 

Ve burada çıkış var:

Bu benim yazdığım şey bu

      bc_icms 
02817342000124 0000010154  NaN 
54921580000189 0000112428  NaN 
08953538000122 0000012865  NaN 
       0000012865  NaN 
       0000012865  NaN 
07374346000107 0000014224  NaN 
       0000014231  NaN 
       0000014263  NaN 
       0000014279  NaN 
02364118000124 0000015263  NaN 
       0000015264  NaN 
       0000015265  NaN 
07720786000160 0000020128  NaN 

Bu istediğim pivot tablo yapısı olduğunu düşünüyorum! İyi! Ama ...

nasıl bu NaN en düzeltebilirim?

Nasıl her CNPJ'sinden için bir "toplam" çizgi oluşturabilir? Excel'de

Örnek:

example

+0

ben "aggfunc" kullanmak gerektiğini düşünüyorum ama bilmiyorum .. . henüz .. –

cevap

4

IIUC, her cnpj değerlerin toplamını gerek, bu yüzden olarak GroupBy kullanırsınız: döndüren

g = df.groupby('cnpj')['bc_icms'].sum().reset_index(name='sum') 

:

   cnpj  sum 
0 2364118000124 93567.24 
1 2817342000124 17827.07 
2 7374346000107 1497.70 
3 8953538000122  686.00 
4 54921580000189 108000.00 

Umut bu yardımcı olur.

DÜZENLEME:

da kullanabilirsiniz:

tam dataframe dışarı döndürür
g = df.groupby(['cnpj','num_doc'])['bc_icms'].sum() 

:

cnpj   num_doc 
2364118000124 15263  37353.10 
       15264  56214.14 
2817342000124 10154  17827.07 
7374346000107 14224   320.12 
       14231   385.04 
       14263   401.28 
       14279   391.26 
8953538000122 12865   686.00 
54921580000189 112428  108000.00 
+0

ben aradığı şeyi exaclty !! çok teşekkürler Fabio! –

İlgili konular