来自pandas数据帧的几列的总和

Pau*_*ine 7 python dataframe pandas

所以说我有下表:

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
Run Code Online (Sandbox Code Playgroud)

我可以这样总结a和b:

In [4]: sum(df['a']) + sum(df['b'])
Out[4]: 18
Run Code Online (Sandbox Code Playgroud)

但是,对于较大的数据帧,这不是很方便,您需要将多个列相加在一起.

是否有一种更简洁的方法来对列进行求和(类似于下面的内容)?如果我想在不指定列的情况下对整个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
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 10

我认为你可以使用双sum- 第一次DataFrame.sum创建Series总和,第二次Series.sum获得总和Series:

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

print (df[['a','b']].sum().sum())
18
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

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

print (df[['a','b']].sum(axis=1).sum())
18
Run Code Online (Sandbox Code Playgroud)

谢谢pirSquared的另一个解决方案 - 转换dfnumpy arrayby values然后sum:

print (df[['a','b']].values.sum())
18
Run Code Online (Sandbox Code Playgroud)
print (df.sum().sum())
21
Run Code Online (Sandbox Code Playgroud)

  • 还有`df [['a','b']].values.sum()` (2认同)