Это фрагмент dataframe у меня есть:Как использовать пользовательскую функцию fillna() в панд
Title | Age
------+--------
Mr. | 30
Mr. | NaN
Mr. | 32
Mrs. | 28
Mrs. | 16
Mr. | 34
Mrs. | NaN
Edit: я добавил последнюю строку, чтобы прояснить вопрос
Я хочу для обозначения NaNs (второй и последней строки), для второго ряда он должен использовать среднее значение другого «г-на», в dataframe, так что в этом случае, должно быть 32, в последней строке следует использовать среднее значение другой «миссис», так должно быть 22
Для вычисления среднего значения так же легко, как делать
value = df.loc[df["Title"] == "Mr."]["Age"].mean()
Так что я написал функцию под названием agefun:
def agefun(df, t):
return df.loc[df["Title"] == t]["Age"].mean()
И это работает, теперь, как я могу использовать эту функцию с функцией fillna()? Я хотел бы что-то вроде:
df['Age'].fillna(agefun(df, this_row_title))
Но, конечно, это не работает, я не знаю, как сказать функцию мне нравится значение, соответствующее название в этой конкретной строке.
Как это можно сделать?
Спасибо много он работал отлично, но мне пришлось изменить его на: 'ФР [ 'Возраст '] = df.groupby (' Title ') ["Age"]. transform (lambda group: group.fillna (group.mean())) Это потому, что у меня есть другие числовые значения в строке. Таким образом, похоже, что он вычислялся на основе всех чисел в строке – luisfer