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