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

Pandas KeyError问题求助:初学KNN复现教程代码报错

解决KNN代码中的KeyError问题

兄弟,我一眼就瞅出问题出在哪了!看你贴的data.head()输出,表头里第一列是 buying(前面带个空格!),不是你代码里写的buying——这就是为啥你用data["maint"]会报KeyError,因为实际列名是 maint(同样带前导空格),pandas根本找不到不带空格的列名呀!

问题根源

你的car.data文件里,所有列名的前面都多了个空格,导致pandas读取后,列名实际是 buying、 maint、 door这种带空白前缀的名字,而你代码里用的是不带空格的列名,自然匹配不上。

快速修复方案

给你两个简单的解决办法,选一个就行:

方案1:读取CSV时自动忽略列名前的空格

修改读取数据的代码,加上skipinitialspace=True参数,让pandas自动跳过列名开头的空格:

data = pd.read_csv("car.data", skipinitialspace=True)

这样读取后,列名就变成干净的buying、maint了,你后续的代码不用改就能正常运行。

方案2:手动清理列名空格

如果不想改读取参数,也可以手动把所有列名的前后空白字符去掉:

data = pd.read_csv("car.data")
# 去掉列名的前后空格
data.columns = data.columns.str.strip()

执行完这行代码,你再用data["maint"]就不会报错了。

额外小提醒

另外瞅了一眼你的代码,你定义了predict = "class",但数据里的目标列实际是cls,虽然后面用y = list(cls)没问题,但这个变量名可以统一一下,避免后续自己搞混~

内容的提问来源于stack exchange,提问作者이종원

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:48:12