行值之和,如果大于零

时间:2019-10-05 21:14:23

标签: python pandas if-statement sum row

我想对熊猫数据框中每一行的所有值求和,如果它们大于零

我的数据框如下:

 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

2 个答案:

答案 0 :(得分:2)

尝试一下

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

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

答案 1 :(得分:1)

作为一种替代解决方案,我们可以使用.clip(..) [pandas-doc]0以下的所有值映射到0,然后在第二个轴上求和:

>>> df.clip(lower=0).sum(axis=1)
0    10
1    11
2     4
dtype: int64