线性回归预测中删除Pandas列转Numpy数组时出现KeyError报错
搞定这个KeyError!问题出在
drop()的参数用法上 嘿,别担心,这个错误和numpy版本一点关系都没有,是你调用pandas的drop()方法时参数传错啦!
错误原因拆解
你写的这行代码:
X = np.array(data.drop(predict), 1)
这里有两个关键问题:
data.drop(predict)默认是按行(axis=0)来执行删除操作的,它会尝试去找索引值等于predict(也就是'G3')的行,但你的数据里根本没有行索引叫'G3'的条目,所以直接触发了KeyError。- 后面的
,1是传给np.array()的第二个参数,这完全不是给drop()的轴参数——相当于你根本没告诉drop()你要删除的是列。
正确写法来啦
要删除指定列,必须把axis=1作为drop()的参数传进去,修正后的代码是:
X = np.array(data.drop(predict, axis=1))
这样drop()就会正确识别到你要删除名为'G3'的列,而不是错误地去找行索引。
额外小技巧
如果你喜欢更直观的写法,也可以用pandas的布尔索引来提取除了G3之外的列,效果完全一样:
X = np.array(data[data.columns != predict])
内容的提问来源于stack exchange,提问作者Mahdi_J
相关产品推荐
相关产品推荐

