pandas dataframe:在一个语句中标识NaN和零值

sto*_*r02 2 python dataframe pandas

有没有办法合并这两个语句 df.isnull().sum()(df == 0).sum()得到以下概述?

演示:

df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,NaN,1,NaN,1], 'c':[0,0,0,0,NaN]})

df

    a   b       c
0   1   0.0     0.0
1   0   NaN     0.0
2   0   1.0     0.0
3   1   NaN     0.0
4   3   1.0     NaN
Run Code Online (Sandbox Code Playgroud)

预期结果:

a    2
b    3
c    5
Run Code Online (Sandbox Code Playgroud)

可能很简单,但我找不到解决方案......谢谢你的帮助

EdC*_*ica 5

你的意思是这样的:

In[27]:

(df==0).sum() + df.isnull().sum()
Out[27]: 
a    2
b    3
c    5
dtype: int64
Run Code Online (Sandbox Code Playgroud)

编辑

感谢@coldpseed的建议,您还可以执行以下操作:

In[28]:
df[df!=0].isnull().sum()

Out[28]: 
a    2
b    3
c    5
dtype: int64
Run Code Online (Sandbox Code Playgroud)

这更简洁,我一直更赞成清晰,但更短的代码有时会赢.

  • `df [df!= 0] .isnull().sum()`用一个总和调用来做...顺便说一下,很高兴见到你:) (4认同)

WeN*_*Ben 5

fillna

df.fillna(0).eq(0).sum()
Out[8]: 
a    2
b    3
c    5
dtype: int64
Run Code Online (Sandbox Code Playgroud)