如何替换其他列满足特定条件的 NaN 值?

agr*_*a94 3 python pandas kaggle

我正在研究 Kaggle 的 Titanic 数据集,并试图根据其他列的信息替换一列中的 NaN 值。

在我的具体示例中,我试图用男性一等舱乘客的平均年龄替换一等舱男性乘客的未知年龄。

我该怎么做呢?

我已经能够对数据进行分段并替换该新数据帧的空值,但它不会延续到原始数据帧,而且我不太清楚如何做到这一点。

这是我的代码:

missingage_1stclass_male = pd.DataFrame(
    titanic[
        (titanic['Age'].isnull()) &
        (titanic['Pclass'] == 1) &
        (titanic['Sex'] == 'male')
    ]
)
missingage_1stclass_male.Age.fillna(40.5, inplace=True)
Run Code Online (Sandbox Code Playgroud)

我的包含所有值的原始数据框被命名为 Titanic。

jpp*_*jpp 5

我试图用男性一等舱乘客的平均年龄替换一等舱男性乘客的未知年龄。

您可以将问题分为 2 个步骤。首先计算男性,一等舱乘客的平均年龄:

mask = (df['Pclass'] == 1) & (df['Sex'] == 'male')
avg_filler = df.loc[mask, 'Age'].mean()
Run Code Online (Sandbox Code Playgroud)

然后更新满足您标准的值:

df.loc[df['Age'].isnull() & mask, 'Age'] = avg_filler
Run Code Online (Sandbox Code Playgroud)