我有一个包含一些缺失值的数据框,我想填充缺失值而不是删除它们。
但是编写函数后,我收到错误:
['MSSubCLass'] not in index
。
LotFrontage
是我要填写的栏目。
MSSubCLass
是我想用其平均值填充的列。
def LotFrontage_fill(columns):
LotFrontage = columns[0]
MSSubCLass = columns[1]
if pd.isnull(LotFrontage):
if MSSubCLass == 20:
return 75
elif MSSubCLass == 30:
return 60
elif MSSubCLass == 40:
return 50
elif MSSubCLass == 45:
return 55
elif MSSubCLass == 50:
return 65
elif MSSubCLass == 60:
return 75
elif MSSubCLass == 70:
return 65
elif MSSubCLass == 75:
return 68
elif MSSubCLass == 80:
return 80
elif MSSubCLass == 85:
return 70
elif MSSubCLass == 90:
return 70
elif MSSubCLass == 120:
return 40
elif MSSubCLass == 160:
return 20
elif MSSubCLass == 180:
return 20
else:
return 55
else:
return LotFrontage
train_df.LotFrontage = train_df[["LotFrontage","MSSubCLass"]].apply(LotFrontage_fill, axis = 1)
(只是为了将问题标记为已解决,我在这里重复我的评论作为答案)
从您发布的图像来看,您似乎在代码中拼错了列名称:应该是
MSSubClass
和小写 l
,而不是 MSSubCLass
和大写 L
。
试试这个。
train_df[["LotFrontage","MSSubCLass"]] =train_df[["LotFrontage","MSSubCLass"]].apply(LotFrontage_fill, axis = 1)
要使用另一列的平均值填充 DataFrame 列中的缺失值,您可以使用 Python 和 pandas 执行以下步骤:
计算要填充缺失值的列的平均值。 使用 fillna() 方法用计算出的平均值替换目标列中的缺失值。