#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'))