Python Pandas中notnull()与~notnull()/isnull()结果不互斥问题咨询
原因解析
核心原因是 pandas的count()方法本身会自动跳过NaN、NaT等所有空值,仅统计列中非空值的数量,和你用的筛选条件是否正确无关:
- 当你筛选出
Last order列非空的行后调用count(),统计的是这些行里非空值的数量,自然和筛选出的行数一致,得到16522 - 当你筛选出
Last order列为空的行后调用count(),这些行的Last order值全是空值,count()会全部忽略,所以结果永远是0,并不是notnull()和isnull()/isna()的判断结果不互斥。
正确统计空值数量的方法
你可以用以下任意一种方式得到预期的2791结果:
- 直接对布尔掩码求和,统计空值匹配的行数:
maintenance_items['Last order'].isnull().sum()
- 筛选空值行后用
shape统计总匹配行数,不会自动过滤空值:
maintenance_items[maintenance_items['Last order'].isnull()].shape[0]
- 用
value_counts查看完整值分布,包含空值:
maintenance_items['Last order'].value_counts(dropna=False)
内容的提问来源于stack exchange,提问作者Carl Kirstein
相关产品推荐
相关产品推荐

