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

发布于 2021-01-19 05:56:50
我已经意识到我的错误所在。代码,
mean(Course_dict[k] for k in Course_dict)例如,返回一个NaN值。我找到的解决方案是使用:
Series([Course_dict[k] for k in Course_dict]).mean()https://stackoverflow.com/questions/65781206
复制相似问题