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()
我有一个 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()