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

我试着使用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值?


牛魔王的故事
浏览 176回答 1
1回答

婷婷同学_

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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python