Pandas删除名为'1'的列时触发KeyError问题求助
解决Pandas删除列时的KeyError问题(数字列名vs字符串列名)
问题本质
你的DataFrame列名是整数类型的1,但调用df.drop('1', axis=1)时传入的是字符串类型的'1',Pandas对列名的匹配严格区分类型,因此会提示['1']不在轴中。
更优解决方案
方案1:直接匹配整数列名
既然列名是整数,直接传入整数1即可:
df = df.drop(1, axis=1) # 或用更清晰的columns参数(Pandas推荐写法) df = df.drop(columns=1)
方案2:统一列名为字符串类型
如果后续需要频繁用字符串操作列名,可先将所有列名转为字符串,之后就能用字符串'1'直接删除:
# 将列名统一转为字符串 df.columns = df.columns.astype(str) # 现在可以直接用字符串删除 df = df.drop('1', axis=1) # 同样支持columns参数 df = df.drop(columns='1')
方案3:按列名类型精准筛选删除
若不确定列名类型,可先筛选出目标列再删除:
# 找到所有列名等于整数1的列 target_cols = [col for col in df.columns if col == 1] df = df.drop(columns=target_cols)
现有方法的生效逻辑
你当前的方法之所以能成功,是因为通过转字符串找到索引后,最终传入drop()的是原始整数列名df.columns[column_index],本质还是匹配了正确的列名类型,只是步骤相对繁琐。
内容的提问来源于stack exchange,提问作者David Hit
相关产品推荐
相关产品推荐

