基于多列子组填充缺失值

Filling missing values based on multi-column subgroup

我想通过两列子组来填充 DataFrame 中缺少的“年龄”值。

df.groupby(["col_x","col_y"])["Age"].mean()

上面的代码returns这些子组的意思:

col_X   col_Y
X       1         35
        2         29
        3         22
Y       1         41
        2         31
        3         27

我觉得这可以通过使用 .map 函数来实现:

df.loc[df['Age'].isnull(),'Age'] = df[['col_X',"col_Y"]].map(something)

谁能帮我解决这个问题?

groupby().transform 更好,returns 与 df 具有相同索引的系列。所以你可以fillna用它:

df['Age'] = df['Age'].fillna(df.groupby(['col_x','col_y'])['Age'].transform('mean'))