通过索引删除DataFrame多列时触发KeyError问题求助
Pandas删除DataFrame列报KeyError问题解决方案
错误原因
- pandas
drop()方法默认axis=0(匹配行索引删除行),你未指定删除列的参数,导致pandas到行索引中查找传入的列名,找不到对应值抛出KeyError。
解决方法
方法1:修正drop()方法参数
删除列时需要显式指定axis=1,单条删除首列的正确写法:
df.drop(df.columns[0], axis=1, inplace=True)
如果要一次性完成所有冗余列删除,写法如下:
# 同时删除首列、及第22列及之后的所有冗余列 df.drop(df.columns[[0] + list(range(21, 69))], axis=1, inplace=True)
方法2:直接按位置选取保留列(更简洁不易出错)
你的需求是固定保留删除首列后的20列,直接用iloc按位置选取目标列即可,无需调用删除方法:
# 取所有行,第2列到第21列(索引1到20,共20列)直接覆盖原df df = df.iloc[:, 1:21]
内容的提问来源于stack exchange,提问作者Haamed Rahman
相关产品推荐
相关产品推荐

