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,提问作者이종원
相关产品推荐
相关产品推荐

