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

pandas执行drop删除列时报错KeyError: ['robbinsville'] not found in axis

问题原因

你提供的CSV文件中town字段的取值全部被单引号包裹,pandas默认使用双引号作为字段包裹标识,读取时不会自动移除这些单引号,因此town列的实际值是带单引号的字符串(如'robbinsville'而非robbinsville)。调用pd.get_dummies生成独热列时,列名会直接复用这些带单引号的值,你尝试删除无单引号的robbinsville自然会触发列不存在的报错。

验证方法

执行以下代码打印合并后的表的全部列名,即可看到独热列的实际名称:

print(merged.columns.tolist())

解决方法

方法一(推荐):读取CSV时清理多余符号

修改CSV读取逻辑,指定单引号为字段包裹符,同时自动跳过字段前的多余空格,读取后town字段的单引号会被自动移除:

import pandas as pd

# 新增quotechar和skipinitialspace参数
df = pd.read_csv("testfile2.csv", quotechar="'", skipinitialspace=True)
df.columns = df.columns.str.strip()
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]

dummies = pd.get_dummies(df.town)
merged = pd.concat([df, dummies], axis='columns')
# 此时可以正常删除无单引号的robbinsville列
final = merged.drop(['town', 'robbinsville'], axis='columns')
print(final)

方法二:直接匹配实际列名删除

如果不修改读取逻辑,删除时直接使用带单引号的列名即可:

final = merged.drop(['town', "'robbinsville'"], axis='columns')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:15:10