Как насчет вычисления пропущенных значений перед запуском команды apply?То есть вычислите среднее значение age
и медиану salary
, затем используйте (обратите внимание на дополнительные []
скобки, необходимые для работы с несколькими столбцами)
median_salary = df['salary'].median()
mean_age = df['age'].mean()
df[['age','salary']].apply({'age': lambda r: r.fillna(mean_age), 'salary': lambda r: r.fillna(median_salary)})
Также обратите внимание, что это не влияетфрейм данных, но вместо этого создает новый, поэтому, если вы хотите обновить столбцы, используйте что-то вроде:
df[['age', 'salary']] = df[['age', 'salary']].apply(...)
Или, в вашем случае, когда вы просто хотите заполнить пропущенные значения, лучшим решением, вероятно, будет:
r.fillna({'age': mean_age, 'salary': median_salary}, inplace=True)