所以说我有下表:
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
解决方法
我想你可以使用双倍总和 – 首先
DataFrame.sum
创建系列总和和第二个
Series.sum
得到系列的总和:
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的另一个解决方案 – 在values
之前将df转换为numpy数组然后求和:
print (df[['a','b']].values.sum()) 18
print (df.sum().sum()) 21