Pandas DF 用字典的平均值替换 none 个值

Pandas DF replacing none values with average of dictionary

我有一个 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 值而不是字典的平均值。我知道字典中有值并且它们被正确调用,所以我不知道为什么会发生这种情况。 上述代码的输出如下所示:

我意识到我的错误在哪里了。 代码,

mean(Course_dict[k] for k in Course_dict)

例如,返回了一个 nan 值。 我找到的解决方案是改为使用:

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