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

Pandas多列查找NaN值触发KeyError:报错解析与解决方法

解决Pandas筛选含NaN行的KeyError问题

错误原因

你用df['col1', 'col2', 'col3']的写法是错误的——Pandas中选择多列需要双层方括号,单层方括号传入元组会被当作单个列名去查找,而你的数据集可能存在重复列名,进一步触发了维度相关的KeyError。

修复方案

1. 修正列选择语法

把列选择部分改成双层方括号,这是Pandas选多列的标准写法:

# 替换空格为NaN(补充完整流程)
import numpy as np
df = df.replace(' ', np.nan)

# 筛选指定列中含NaN的行
nan_rows = df[df[['col1', 'col2', 'col3']].isna().any(axis=1)]

2. 处理重复列名(如果存在)

如果数据集确实有重复列名,先通过重命名解决:

# 给重复列添加后缀区分
df.columns = [f"{col}_{idx}" if df.columns.tolist().count(col) > 1 else col for idx, col in enumerate(df.columns)]

# 再执行筛选
nan_rows = df[df[['col1', 'col2', 'col3']].isna().any(axis=1)]

3. 筛选所有列中含NaN的行(如果不需要指定列)

如果要找任意列含NaN的行,直接简化代码:

nan_rows = df[df.isna().any(axis=1)]

验证结果

运行上述代码后,nan_rows会包含所有目标列(或所有列)中存在NaN的行,即你期望的row1、row3、row4、row5。

内容的提问来源于stack exchange,提问作者Deidraak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:40:31