Pandas DF замена значений none на среднее значение по словарю

#pandas #dataframe #formatting

#pandas #фрейм данных #форматирование

Вопрос:

У меня есть pandas df и коллекция словарей. Я пытаюсь создать новый столбец, который имеет значение в индексах этой строки со значением из словаря, и если этого значения нет в словаре, замените этот ввод средним значением всего словаря.

В настоящее время мой код выглядит так:

 df_test["course_mean_time"] = df_test["Course"].apply(lambda x: Course_dict.get(x))
df_test.course_mean_time.fillna(mean(Course_dict[k] for k in Course_dict), inplace=True)
df_test['Horse_mean_time'] = df_test["Horse"].apply(lambda x: Horse_dict.get(x))
df_test.Horse_mean_time.fillna(mean(Horse_dict[k] for k in Horse_dict), inplace=True)
df_test['Dist_mean_time'] = df_test['Dist_M'].apply(lambda x: Dist_dict.get(x))
df_test.Dist_mean_time.fillna(mean(Dist_dict[k] for k in Dist_dict), inplace=True)
df_test['Jockey_mean_time'] = df_test['Jockey'].apply(lambda x: Jockey_dict.get(x))
df_test.Jockey_mean_time.fillna(mean(Jockey_dict[k] for k in Jockey_dict), inplace=True)
 

Код course_mean_time работает корректно, но весь последующий код заменяет значения None значениями NaN вместо среднего значения по словарю. Я знаю, что в словарях есть значения, и они вызываются правильно, поэтому я не знаю, почему это происходит.
Вывод приведенного выше кода выглядит следующим образом:
введите описание изображения здесь

Ответ №1:

Я понял, в чем была моя ошибка. Код,

 mean(Course_dict[k] for k in Course_dict)
 

например, возвращено значение nan.
Решение, которое я нашел, заключалось в том, чтобы вместо этого использовать:

 Series([Course_dict[k] for k in Course_dict]).mean()