Jupyter环境下DataFrame调用drop删除首行触发KeyError的问题咨询
报错核心原因
- 轴参数方向完全传错:pandas的
drop方法中,axis=0对应操作对象是行,axis=1对应操作对象是列。你本意是删除行索引为0的首行,却传入了axis=1,相当于要求程序在现有列名中查找叫0的列,但你的数据集列是Riding、Filipino Population,根本不存在名为0的列,自然会抛出KeyError: '[0] not found in axis'。 - 赋值逻辑存在冲突:当设置
inplace=True时,drop方法会直接修改原DataFrame,本身没有返回值。哪怕轴参数改对了,你写的df_filipino2_clean = pop_filipino2_DF_with_percent.drop([0],axis=1,inplace=True)这种写法,最终拿到的df_filipino2_clean也会是None,根本无法获取清洗后的数据。
正确的操作方式
根据你的使用场景选对应写法即可:
- 直接原地修改原表,不需要保留原数据:
pop_filipino2_DF_with_percent.drop([0], axis=0, inplace=True)
- 保留原表,生成独立的清洗后数据集:
df_filipino2_clean = pop_filipino2_DF_with_percent.drop([0], axis=0)
避坑技巧:如果记混axis对应的数字含义,可以直接用语义化参数指定操作对象,完全避免轴方向判断失误:
# 原地删除索引为0的行 pop_filipino2_DF_with_percent.drop(index=[0], inplace=True) # 生成新的清洗表 df_filipino2_clean = pop_filipino2_DF_with_percent.drop(index=[0])
内容的提问来源于stack exchange,提问作者Dlan Awriya
相关产品推荐
相关产品推荐

