【问题标题】:Replace selected values of one column with median value of another column but with condition将一列的选定值替换为另一列的中值但具有条件
【发布时间】:2021-07-25 16:44:22
【问题描述】:

所以,我希望你知道著名的泰坦尼克号问题。这是我到目前为止通过学习教程所做的。现在我想用 Age 列的一部分的中值替换列的 NaN 值:Age。但是选择的部分应该对“Title”有一定的价值

例如,我想在 Title="Mr" 的地方替换 Age 的 NaN,因此“Mr”的中值将填充到同样具有 Title=="Mr" 的缺失位置。

我试过这个:

for val in data["Title"].unique():
    median_age = data.loc[data.Title == val, "Age"].median()
    data.loc[data.Title == val, "Age"].fillna(median_age, inplace=True)

但年龄仍然显示为NaN。我该怎么做?

【问题讨论】:

    标签: pandas python-3.7


    【解决方案1】:

    使用combine_first 填充NaN。我的数据集中没有 Title 列,但它是相同的:

    df['Age'] = df['Age'].combine_first(df.groupby('Sex')['Age'].transform('median'))
    

    【讨论】:

    • 我从名称列中创建了标题列,提取了名称中的标题部分,因此年龄可以用标题的特定中值填充。无论如何,您的解决方案就像一个魅力谢谢
    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2018-10-18
    相关资源
    最近更新 更多