如何使用另一列的平均值填充数据框列的缺失行?

问题描述 投票:0回答:3

我有一个包含一些缺失值的数据框,我想填充缺失值而不是删除它们。

但是编写函数后,我收到错误:

['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)
python dataframe fillna
3个回答
0
投票

(只是为了将问题标记为已解决,我在这里重复我的评论作为答案)

从您发布的图像来看,您似乎在代码中拼错了列名称:应该是

MSSubClass
和小写
l
,而不是
MSSubCLass
和大写
L


0
投票

试试这个。

train_df[["LotFrontage","MSSubCLass"]] =train_df[["LotFrontage","MSSubCLass"]].apply(LotFrontage_fill, axis = 1)

0
投票

要使用另一列的平均值填充 DataFrame 列中的缺失值,您可以使用 Python 和 pandas 执行以下步骤:

计算要填充缺失值的列的平均值。 使用 fillna() 方法用计算出的平均值替换目标列中的缺失值。

© www.soinside.com 2019 - 2024. All rights reserved.