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

时间:2018-05-01 13:58:36

标签: python pandas dataframe

有没有办法合并这两个陈述 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

预期结果:

a    2
b    3
c    5

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

3 个答案:

答案 0 :(得分:5)

你的意思是:

In[27]:

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

修改

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

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

Out[28]: 
a    2
b    3
c    5
dtype: int64

这更简洁,我一直更赞成清晰,但有时会缩短代码。

答案 1 :(得分:5)

使用public class MyClass { static MyClass() { EventManager.RegisterClassHandler(typeof(MyClass), Button.ClickEvent, ClickHandler); EventManager.RegisterClassHandler(typeof(Button), Button.ClickEvent, ClickHandler); EventManager.RegisterClassHandler(typeof(MyClass), Mouse.MouseDownEvent, MouseDownHandler); EventManager.RegisterClassHandler(typeof(Button), Mouse.MouseDownEvent, MouseDownHandler); } }

fillna

答案 2 :(得分:2)

另一种选择:

>>> ((df == 0) | df.isnull()).sum()
a    2
b    3
c    5
dtype: int64
>>>

此外:

>>> (df.eq(0) | df.isnull()).sum()
a    2
b    3
c    5
dtype: int64
>>>