如果行值之和大于零,则求行值之和

3

如果 pandas dataframe 中的值大于零,我想为每行求和

我的 dataframe 如下所示:

 col1 col2 col3 col4
 5     4   -2     1
 3     6    2    -3
 2    -2    1     1

我想添加一列,显示所有正数的和。结果应该如下:

 col1 col2 col3 col4 sum
 5     4   -2     1   10
 3     6    2    -3   11
 2    -2    1     1    2

1
那么你不想对条件选择(>=0)执行聚合SUM()函数并对其结果进行计算吗? - J. Murray
我该如何表达这个代码?df[allrowvalues>0].sum(axis=1) - Tobi
2个回答

4

试试这个

df.where(df > 0).sum(1)

Out[34]:
0    10.0
1    11.0
2     4.0
dtype: float64

2
作为另一种解决方案,我们可以使用.clip(..) [pandas-doc]将所有小于0的值映射为0,然后在第二轴上求和:
>>> df.clip(lower=0).sum(axis=1)
0    10
1    11
2     4
dtype: int64

这应该是被接受的答案,因为它允许链接并且不需要中间变量。 - Sebastian Wozny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接