Skip to main content
 首页 » 编程设计

python之计算一行中符合条件的值之Python

2025年05月04日16dyllove98

我有一个包含整数和 NaN 的数据框。我几乎想要创建一个 countif 语句,它将迭代一行中的每个值并计算大于 0 的值。

这是一个例子:

d = {'col1': [1, "", 5, 0], 'col2': [3, 4, "", 7], 'col3': [2, 8, "", 3]} 
df = pd.DataFrame(data=d) 
df = df.convert_objects(convert_numeric = True) 
 
df 
Out[356]:  
col1  col2  col3 
0   1.0   3.0   2.0 
1   NaN   4.0   8.0 
2   5.0   NaN   NaN 
3   0.0   7.0   3.0 

我一直在使用下面的这个函数来计算不是 NaN 的值,但是我想对此设置一个条件(大于 0 而不是 NaN)。

df.apply(lambda x: x.count(), axis = 1) 
Out[357]:  
0    3 
1    2 
2    1 
3    3 
dtype: int64 

如果有人可以提供有关如何根据特定条件对行中的值进行计数的建议,那将非常有用,在此先感谢。

请您参考如下方法:

Pandas 允许您广播比较器,因此 df>0 根据 df 的相应条目是否大于 创建一个数据框,其中每个条目都是 bool 值>0(这也处理了 NaN,因为 np.nan > 0 被评估为 False)。 sum 方法然后将 True 强制为 1 并将 False 强制为 0 并找到全部的。由于您需要行总计,因此您希望轴为 1。所以:

(df>0).sum(axis=1)