如何在Pandas DataFrame中筛选特定列存在缺失值的数据?
筛选包含特定列缺失值的DataFrame
嘿,这个需求在数据清洗里太常见了,我给你分情况讲清楚怎么用Pandas实现,附带示例代码,一看就懂~
1. 筛选某单列存在缺失值的行
假设你的DataFrame叫df,要筛选的列是target_col,直接用isna()(或者等价的isnull())生成布尔掩码,再做索引就行:
# 筛选col1列有缺失值的行 filtered_df = df[df['col1'].isna()]
2. 筛选两列中任意一列存在缺失值的行
这里有两种写法,选你顺手的来:
方法一:用逻辑或运算符|
注意要给每个条件加括号,避免运算符优先级问题:
# 筛选col1或col2存在缺失值的行 filtered_df = df[(df['col1'].isna()) | (df['col2'].isna())]
方法二:用any(axis=1)批量检查
如果后续要扩展到更多列,这个方法更简洁——先选中目标列,生成缺失值矩阵,再按行判断是否有任意缺失:
# 筛选col1或col2存在缺失值的行 filtered_df = df[df[['col1', 'col2']].isna().any(axis=1)]
3. 额外补充:筛选两列都存在缺失值的行
虽然你没提,但万一需要的话,把上面的逻辑换成“与”就行:
- 用逻辑与运算符
&:
filtered_df = df[(df['col1'].isna()) & (df['col2'].isna())]
- 用
all(axis=1)批量检查:
filtered_df = df[df[['col1', 'col2']].isna().all(axis=1)]
示例演示
给你个完整的例子,跑一遍就明白效果了:
import pandas as pd import numpy as np # 创建测试DataFrame df = pd.DataFrame({ 'col1': [1, np.nan, 3, np.nan, 5], 'col2': [np.nan, 2, np.nan, 4, 5], 'col3': [1, 2, 3, 4, 5] }) # 筛选col1或col2有缺失的行 result = df[df[['col1', 'col2']].isna().any(axis=1)] print(result)
输出结果会是:
col1 col2 col3 0 1.0 NaN 1 1 NaN 2.0 2 2 3.0 NaN 3 3 NaN 4.0 4
内容的提问来源于stack exchange,提问作者C_forcode
相关产品推荐
相关产品推荐

