如何排除指定列统计DataFrame行或目标列的空值数量?
解决DataFrame指定列空值统计问题
嗨,这问题很常见,我来帮你快速搞定!你想要统计仅First_Name和Age列的空值数量,排除Last_Name,原来的代码因为没做列筛选,所以统计了所有列,调整一下就好,给你两种实用方法:
方法1:直接指定要统计的目标列
先明确列出你需要统计的列,再执行空值统计操作,这样最直观:
import pandas as pd import numpy as np # 注意:pandas里的空值要用np.nan,不是你写的Null # 先正确构建你的DataFrame(修正空值写法) df = pd.DataFrame({ 'Last_Name': ['Smith', np.nan, np.nan,'Joy'], 'First_Name': ['John', np.nan, 'Bill', 'Tony'], 'Age': [35, 45, np.nan, 60] }) # 只选择First_Name和Age列,再统计空值 null_counts = df[['First_Name', 'Age']].isnull().sum() # 筛选出存在空值的列并降序排序 filtered_result = null_counts[null_counts > 0].sort_values(ascending=False) print(filtered_result)
运行后会输出:
First_Name 1 Age 1 dtype: int64
方法2:排除不需要的列(适合列数量多的场景)
如果你的DataFrame列很多,不想一个个列出来,直接排除Last_Name列更高效:
# 去掉Last_Name列后再统计空值 null_counts = df.drop(columns=['Last_Name']).isnull().sum() filtered_result = null_counts[null_counts > 0].sort_values(ascending=False) print(filtered_result)
这个方法和上面的结果完全一致,适合列数较多的情况。
小提醒
你原来写的Null在pandas里不会被识别为空值,必须换成np.nan(需要先导入numpy),否则isnull()会把它当成普通字符串,统计结果就错啦!
内容的提问来源于stack exchange,提问作者Rahul




