计算Pandas数据框每一列中满足条件的值的数量

时间:2019-11-05 19:37:14

标签: python pandas

我有一个包含几列数据的数据框。在数据中,-1等于丢失的数据。我想计算每列中-1值的数量。

我相信我可以在加载数据时将-1注册为NaN /缺失值,然后看到使用了isna()并计算了布尔值的东西。但是,我想做的事情(将条件应用于每列)似乎是我应该知道的基本事情,因此我想弄清楚如何用这种方式做。

这里是一个例子。假设我有以下数据框:

row   A   B  C  D  E
1     3   5  6  9 -1
2    -1   3 -1  2  0
3    -1  -1 -1  1 -1

我想得到的输出是:

A  B  C  D  E
2  1  2  0  2

我尝试了以下方法:

df.apply(lambda x: x == -1).count() # value returned was the count of all the rows
(df == -1).count() # also returned a count of all the rows.

我浏览了几个与“ countif”有关的问题,但它们似乎都对一个列应用了条件来选择行。我在上面尝试过的两项是关于将函数应用于各列并计算与各列中的条件相匹配的值的问题。

注释中建议的重复项是针对整个数据框寻找单个值,并在每一列上寻找不同的条件。我希望将相同的条件应用于每一列,并获得每一列的结果,如下面的选定答案所示。

对于任何有关如何进行的想法或想法,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用DataFrame.eq + DataFrame.sum

#You can omit to_frame and T if you don't want a DataFrame.
df.eq(-1).sum().to_frame().T
#(df==-1).sum() #similar

或者如果是str

df.eq('-1').sum().to_frame().T

如果行是一列:

df[df.columns[1:]].eq(-1).sum().to_frame().T

   A  B  C  D  E
0  2  1  2  0  2