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

如何解决pandas中get_dummies()的KeyError错误?

解决pandas.get_dummies()报KeyError:列中不存在'Car'的问题

问题描述

我尝试将分类数据转换为数值型,使用了以下代码:

import pandas as pd

cars = pd.read_csv("caterogical data.csv")
ohe_cars = pd.get_dummies(cars[['Car']])

print(ohe_cars.to_string())

整理数据后仍报错,错误信息如下:

Traceback (most recent call last):
 PS C:\Users\BAGAS Laptop> & "C:/Users/BAGAS Laptop/AppData/Local/Programs/Python/Python311/python.exe" "e:/BELAJAR CODING/Belajar coding2023/.vscode/python machine learning6"
Traceback (most recent call last):
  File "e:\BELAJAR CODING\Belajar coding2023\.vscode\python machine learning6", line 139, in <module>
    ohe_cars = pd.get_dummies(cars[['Car']])
                              ~~~~^^^^^^^^^
  File "C:\Users\BAGAS Laptop\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\frame.py", line 3767, in __getitem__
    indexer = self.columns._get_indexer_strict(key, "columns")[1]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\BAGAS Laptop\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\indexes\base.py", line 5877, in _get_indexer_strict
    self._raise_if_missing(keyarr, indexer, axis_name)
  File "C:\Users\BAGAS Laptop\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\indexes\base.py", line 5938, in _raise_if_missing
    raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['Car'], dtype='object')] are in the [columns]"

问题核心

报错的本质是:你读取的CSV文件中没有名为'Car'的列,或者列名存在拼写错误、大小写不一致、前后空格等匹配问题。

解决步骤

  • 先确认CSV的真实列名
    在调用get_dummies前,先打印所有列名,明确文件里的实际列:

    import pandas as pd
    cars = pd.read_csv("caterogical data.csv")
    # 输出所有列名列表
    print(cars.columns.tolist())
    

    你可能会发现列名是小写的car、带空格的Car Model,或者拼写错误成Cars。

  • 修正列名匹配
    根据上面得到的真实列名修改代码:

    • 若列名是car,则改成cars[['car']]
    • 若列名带空格如Car Name,则用cars[['Car Name']]
    • 若列名有前后空格,先清理列名再调用:
      # 去除所有列名的前后空格
      cars.columns = cars.columns.str.strip()
      ohe_cars = pd.get_dummies(cars[['Car']])
      
  • 验证文件读取正确性
    可以先打印数据前几行,确认CSV是否正确读取:

    print(cars.head())
    

    如果数据为空或不符合预期,可能是文件路径错误,或者CSV分隔符不是逗号(比如制表符、分号),可以指定分隔符:

    # 制表符分隔的文件
    cars = pd.read_csv("caterogical data.csv", sep='\t')
    # 分号分隔的文件
    cars = pd.read_csv("caterogical data.csv", sep=';')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:19:57