我有一个包含整数和 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)
关于python - 计算一行中符合条件的值 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547639/