2016-10-18 86 views
6

所以說,我有如下表:總和幾列的

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 

我可以總結a和b的方法:

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

然而,這不是大很方便數據框,您必須將多個列彙總在一起。

是否有一個更好的方式來總結列(類似於下面)?如果我想總結整個DataFrame而不指定列?

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

回答

7

我想你可以使用雙sum - 第一DataFrame.sum創建資金和SeriesSeries.sum GET總和Series

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

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

您還可以使用:

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

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

謝謝pirSquared另一種解決方案 - 將df轉換爲numpy array通過values然後sum

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

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

也'DF [[ 'A', 'B']] values.sum()' – piRSquared