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

DataFrame子集选取出现KeyError: ['1-30'] not in index错误的解决求助

解决DataFrame列索引KeyError问题:列名空格导致的匹配失败

兄弟,我一眼就看出问题出在哪了——你代码里写的列名和实际DataFrame的列名完全不匹配!

你提供的列名信息里,第二列的真实名称是1 - 30(注意数字1、减号、30之间都有空格),但你在代码里用的是1-30(没有空格),这两个在Python眼里是完全不同的字符串,自然会抛出KeyError啦!

给你几个实用的解决办法:

  • 直接使用正确的列名(最快捷)
    把代码里的列名改成带空格的版本,和真实列名完全一致:

    Sub_DF = DF[["Name","1 - 30"]]
    
  • 先确认列名再复制粘贴(新手避坑必备)
    手动输入列名很容易出错,你可以先打印出所有列名,直接复制粘贴到代码里:

    # 打印所有列名
    print(DF.columns)
    # 输出示例:Index(['Name', '1 - 30', 'Cred.limit'], dtype='object')
    # 直接复制'1 - 30'到索引代码中即可
    
  • 重命名列名(一劳永逸)
    如果觉得带空格的列名太麻烦,可以一次性把列名改成无空格的格式,后续操作就不用再纠结空格了:

    DF = DF.rename(columns={"1 - 30": "1-30"})
    # 之后再执行你的原代码就没问题了
    Sub_DF = DF[["Name","1-30"]]
    

另外,你提到用iloc没解决问题,可能是用法不对?iloc是按列的位置索引(从0开始计数),前两列的位置是0和1,所以正确的写法是:

Sub_DF = DF.iloc[:, [0, 1]]

这个方法不管列名是什么,都能精准取到前两列,适合列名复杂的场景。

新手最容易踩字符串匹配的坑,比如大小写、空格、特殊符号不一致,以后遇到这类问题先仔细核对实际的列名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:02:34