首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现`df[m] = df[x] + df[y] +df[z]‘的更好方法

实现`df[m] = df[x] + df[y] +df[z]‘的更好方法
EN

Stack Overflow用户
提问于 2016-09-30 15:22:21
回答 2查看 618关注 0票数 2

我想得到三列之和,我采用的方法如下:

代码语言:javascript
复制
In [14]:

a_pd = pd.DataFrame({'a': np.arange(3),
                     'b': [5, 7, np.NAN],
                     'c': [2, 9, 0]})
a_pd
Out[14]:
a   b   c
0   0   5.0 2
1   1   7.0 9
2   2   NaN 0
In [18]:

b_pd = a_pd['a'] + a_pd['b'] + a_pd['c']
b_pd
Out[18]:
0     7.0
1    17.0
2     NaN
dtype: float64

但正如你所看到的,NaN不能被排除在外。所以我试了一下np.add(),但有些地方错了:

代码语言:javascript
复制
In [19]:

b_pd = a_pd[['a', 'b', 'c']].apply(np.add, axis=1)
b_pd
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-19-f52f400573b4> in <module>()
----> 1 b_pd = a_pd[['a', 'b', 'c']].apply(np.add, axis=1)
      2 b_pd

F:\anaconda\lib\site-packages\pandas\core\frame.pyc in apply(self, func, axis, broadcast, raw, reduce, args, **kwds)
   4045 
   4046         if isinstance(f, np.ufunc):
-> 4047             results = f(self.values)
   4048             return self._constructor(data=results, index=self.index,
   4049                                      columns=self.columns, copy=False)

ValueError: invalid number of arguments

所以,我想知道你是怎么解决这个问题的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-30 15:25:28

您可以使用DataFrame的求和方法:

代码语言:javascript
复制
a_pd.sum(axis=1)
Out: 
0     7.0
1    17.0
2     2.0
dtype: float64

如果要指定列:

代码语言:javascript
复制
a_pd[['a', 'b', 'c']].sum(axis=1)
Out: 
0     7.0
1    17.0
2     2.0
dtype: float64
票数 5
EN

Stack Overflow用户

发布于 2016-09-30 15:31:20

np.add需要输入

代码语言:javascript
复制
b_pd = a_pd[['a', 'b', 'c']].apply(np.sum, axis=1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39794937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档