Python使用均值填充缺失值运行代码报KeyError错误如何解决
报错原因
KeyError: 'Perkotaan' 本质是代码尝试读取DataFrame中不存在的列触发的报错,常见诱因有3个:
- 代码混用了两个DataFrame变量
df和data:筛选空值时读取的是data对象的列,赋值时操作的是df对象的列,若data中没有Perkotaan字段就会触发报错 - 列名拼写不符:比如存在大小写差异、列名前后带空格、拼写多/少字符的情况
- 对应列已被提前删除:数据预处理过程中误删了目标字段,或者读取数据时没有加载到对应列
解决步骤
- 先统一DataFrame变量名,避免多对象混用,同时可以删掉冗余的
==True判断(isnull()本身返回布尔值),修正后代码如下:
# 全程操作同一个df对象 df.loc[df['Perkotaan'].isnull(), 'Perkotaan'] = df['Perkotaan'].mean() df.loc[df['Perdesaan'].isnull(), 'Perdesaan'] = df['Perdesaan'].mean()
- 执行代码打印当前df的所有列名,确认目标字段是否存在、列名是否匹配:
print(df.columns.tolist())
如果检查发现列名前后存在多余空格,可以先批量清理列名:
# 去除所有列名前后的空白字符 df.columns = df.columns.str.strip()
- 可以用更简洁的pandas内置方法完成多列均值填充,避免重复写多行逻辑:
# 一次性对指定两列用各自的均值填充缺失值 df[['Perkotaan', 'Perdesaan']] = df[['Perkotaan', 'Perdesaan']].fillna(df[['Perkotaan', 'Perdesaan']].mean())
内容的提问来源于stack exchange,提问作者karmilah ila
相关产品推荐
相关产品推荐

