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

标签 python pandas if-statement count

我有一个包含整数和 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/

相关文章:

Java:如果用户输入 'y' | |'Y' 测验开始 ,'n' | |'N' 测验结束,休息时显示无效。我想当用户输入以 y 或 n 开头的单词时显示无效

python - Pandas concat 产生 ValueError : Plan shapes are not aligned

python - 从另一个 GroupBy 对象创建一个 GroupBy 对象

python - 只读取包含大量列的大型文本数据文件的最后一列

python - 取三个集合的共同元素

python - 通过删除行来消除 DataFrame 中一列的倾斜?

arrays - 数组/匹配/索引问题

ruby - 如何在 Ruby 中编写复杂的多行 if 条件?

python - Django休息框架: Issue using OrderingFilter and django-filter simultaneously

python - 重新排列数组的多线程方法?