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

pandas DataFrame通过read_csv导入后列名无法识别报KeyError如何解决

问题排查步骤
  • 确认变量名对应关系
    你打印列名时用的是dfPNC.columns.tolist(),并非df2.columns.tolist(),大概率混淆了变量名,导致你误以为df2存在f2列。从你给出的df2.keys()返回结果可以确认,df2实际不存在f2列,反而存在你未用到的f0列,这是触发KeyError的核心原因,先打开df2对应的csv文件核对表头内容,确认是否把f2误写为f0。
  • 修正列选取的语法错误
    1. 选取多列必须传入字符串列表,你写的df2['f1', 'f2', 'f3', 'f4', 'f5', 'f6']等价于查找名称为('f1', 'f2', 'f3', 'f4', 'f5', 'f6')的单个元组列,和你的需求不符。
    2. 你后续写的x = df2[features]逻辑错误:如果features已经是df2的切片,不需要再用df2二次索引,直接赋值即可。
    3. 你第三次尝试的features = [['f1','f2', 'f3', 'f4', 'f5', 'f6', 'f7']]多了一层方括号,嵌套列表会被pandas识别为布尔掩码输入,触发类型错误,去掉外层多余的方括号使用单层列表即可。
  • 排查列名隐藏字符
    如果确认csv表头确实存在f2列,打印每个列名的原始字符排查空格、不可见字符:
for col in df2.columns:
    print(repr(col))

如果输出存在类似' f2'(带多余空格)的结果,说明列名有冗余字符,可批量清理:

df2.columns = df2.columns.str.strip()
修复后的可运行代码示例
# 导入csv时处理表头多余空格
df2 = pd.read_csv('filepath2.csv', skipinitialspace=True)
# 打印df2的实际列名确认
print("df2列名:", df2.columns.tolist())
# 定义要选取的列名列表(单层列表)
feature_cols = ['f1', 'f2', 'f3', 'f4', 'f5', 'f6']
target_col = 't'
# 提前校验列是否存在,避免运行报错
missing_cols = [col for col in feature_cols + [target_col] if col not in df2.columns]
if missing_cols:
    print(f"df2缺失以下列:{missing_cols}")
else:
    x = df2[feature_cols]
    y = df2[target_col]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:24:02