Python 数据帧:在一条语句中标识NaN和零值

Python 数据帧:在一条语句中标识NaN和零值,python,pandas,dataframe,Python,Pandas,Dataframe,有没有办法把这两种说法结合起来 df.isnull().sum()和 (df==0).sum()获取以下概述 演示: 预期结果: a 2 b 3 c 5 可能很简单,但我找不到解决方案。。。 谢谢你的帮助你是说: In[27]: (df==0).sum() + df.isnull().sum() Out[27]: a 2 b 3 c 5 dtype: int64 编辑 感谢@coldpseed的建议,您还可以执行以下操作: In[28]: df[df!

有没有办法把这两种说法结合起来
df.isnull().sum()
(df==0).sum()
获取以下概述

演示:

预期结果:

a    2
b    3
c    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
更简洁的是,我一直更支持清晰,但短代码有时会胜出。

另一种选择:

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


使用
fillna

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

只要
(df==0).sum()+df.isnull().sum()
df[df!=0].isnull().sum()
只调用一个sum就可以了。。。顺便说一下,很高兴见到你:)@cᴏʟᴅsᴘᴇᴇᴅ 谢谢,看起来比较整洁,我应该包括在内吗?在幻想破灭后,我在工作上也很忙,只是用脚趾象征性地说了一句:是的,绝对是,这是为了让你加入进来!我们需要我们的老兵回来,没有更好的时间让你回来了。。。这正是我想要的。我怀疑这个查询存在一个特殊的表达式,谢谢你的帮助@Tomor02最好不要想得太多,在这里使用
+
生成的序列将在索引上自然对齐,因此它不会像看起来的那样复杂(在较大的帧上fillna可能较慢),但除非性能是关键,否则这并不重要。
>>> (df.eq(0) | df.isnull()).sum()
a    2
b    3
c    5
dtype: int64
>>>
df.fillna(0).eq(0).sum()
Out[8]: 
a    2
b    3
c    5
dtype: int64