Заполнение пропущенных значений на основе многоколоночной подгруппы

#python #pandas #dataframe #dictionary #pandas-groupby

#питон #панды #фрейм данных #словарь #панды-групповые

Вопрос:

Я хочу заполнить отсутствующие значения «Возраста» фрейма данных средним значением подгруппы из двух столбцов.

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

Приведенный выше код возвращает средства этих подгрупп:

 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)  

Кто-нибудь может мне в этом помочь?

Ответ №1:

Это лучше с groupby().transform , который возвращает серию с тем же индексом, df что и . Так что вы можете fillna с этим:

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