2016-10-18 30 views
6

Yani aşağıdaki tabloyu olduğunu varsayalım:toplamı

In [4]: sum(df['a']) + sum(df['b']) 
Out[4]: 18 

Ancak bu daha geniş için çok uygun değildir:

In [2]: df = pd.DataFrame({'a': [1,2,3], 'b':[2,4,6], 'c':[1,1,1]}) 

In [3]: df 
Out[3]: 
    a b c 
0 1 2 1 
1 2 4 1 
2 3 6 1 

Ben Özetle edebilir bu şekilde b Birden çok sütunu birlikte toplamak zorunda olduğunuz veri ağı.

Sütunları toplamak için daha iyi bir yol var mı (aşağıdakine benzer)? Tüm DataFrame sütunlarını belirtmeksizin özetlemek istersem ne olur?

In [4]: sum(df[['a', 'b']]) #that will not work! 
Out[4]: 18 
In [4]: sum(df) #that will not work! 
Out[4]: 21 

cevap

7

Kullanabileceğin düşünüyorum çift sum - ilk DataFrame.sum toplamlar ve Series ikinci Series.sum olsun toplamının Series oluşturun:

print (df[['a','b']].sum()) 
a  6 
b 12 
dtype: int64 

print (df[['a','b']].sum().sum()) 
18 

de kullanabilirsiniz:

print (df[['a','b']].sum(axis=1)) 
0 3 
1 6 
2 9 
dtype: int64 

print (df[['a','b']].sum(axis=1).sum()) 
18 

teşekkür ederiz Başka bir çözüm için pirSquared - df dönüştürmek ile 933.210 ve daha sonra sum.

print (df[['a','b']].values.sum()) 
18 

print (df.sum().sum()) 
21 
+2

da 'df [[ 'a', 'b']] values.sum() ' – piRSquared