加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:56:17 所属栏目:Python 来源:网络整理
导读:所以说我有下表: In [2]: df = pd.DataFrame({'a': [1,2,3],'b':[2,4,6],'c':[1,1,1]})In [3]: dfOut[3]: a b c0 1 2 11 2 4 12 3 6 1 我可以这样总结a和b: In [4]: sum(df['a']) + sum(df['b'])Out[4]: 18 但是,对于较大的数据帧,这不是很方便,您需要将多
所以说我有下表:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读