Python 按数据帧计算每行的零数?

Python 按数据帧计算每行的零数?,python,pandas,Python,Pandas,给定一个数据帧,我想计算每行的零数。用熊猫怎么计算呢 这就是我目前所做的,它返回零的索引 def is_blank(x): return x == 0 indexer = train_df.applymap(is_blank) 使用布尔比较生成布尔df,然后我们可以将其转换为int,True变为1,False变为0,然后调用count并传递参数axis=1进行行计数: In [56]: df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,

给定一个数据帧,我想计算每行的零数。用熊猫怎么计算呢

这就是我目前所做的,它返回零的索引

def is_blank(x):
    return x == 0 

indexer = train_df.applymap(is_blank)

使用布尔比较生成布尔df,然后我们可以将其转换为int,True变为1,False变为0,然后调用
count
并传递参数
axis=1
进行行计数:

In [56]:

df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]})
df
Out[56]:
   a  b  c
0  1  0  0
1  0  0  0
2  0  1  0
3  1  0  0
4  3  1  0
In [64]:

(df == 0).astype(int).sum(axis=1)
Out[64]:
0    2
1    3
2    2
3    2
4    1
dtype: int64
分解上述内容:

In [65]:

(df == 0)
Out[65]:
       a      b     c
0  False   True  True
1   True   True  True
2   True  False  True
3  False   True  True
4  False  False  True
In [66]:

(df == 0).astype(int)
Out[66]:
   a  b  c
0  0  1  1
1  1  1  1
2  1  0  1
3  0  1  1
4  0  0  1
编辑

正如david指出的,
astype
int
是不必要的,因为调用
sum
时,
Boolean
类型将被升级到
int
,因此这简化为:

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

下面是另一个使用
apply()
value\u counts()
的解决方案


可以使用python的以下函数计算每列的零。 它可以帮助需要计算每列的特定值的人

df.isin([0]).sum()


这里df是数据帧,我们要计算的值是0

只是在试图找到它时损失了30分钟。非常感谢。
df.isin([0]).sum()