为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫如何使用groupby将NaN值替换为平均值

熊猫如何使用groupby将NaN值替换为平均值

牛魔王的故事 2021-04-02 14:11:08
我试着使用groupby(client_id或client _ name)替换列特征计数中的NaN值(其整数范围为1到10),但是NaN值似乎没有变化。df['feature_count'].isnull().sum()输出为:2254现在我使用:df['feature_count'].fillna(df.groupby('client_name')['feature_count'].mean(), inplace=True)但是输出保持不变:df['feature_count'].isnull().sum()2254还有其他方法可以通过按其ID分组的列的其他非NaN值来替换NaN值?
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

df.groupby('client_name')['feature_count'].mean() 返回一个序列。


但是,您并不想将null值替换为series。相反,您想将空值替换为从series映射的均值。


因此,您可以使用以下内容:


s = df.groupby('client_name')['feature_count'].mean()

df['feature_count'].fillna(df['client_name'].map(s), inplace=True)

更可恶的将是利用pd.DataFrame.transform,它可以为您处理映射部分:


s = df.groupby('client_name')['feature_count'].transform('mean')

df['feature_count'].fillna(s, inplace=True)


查看完整回答
反对 回复 2021-04-13
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信