You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:02:42