pandas如何使用groupby [duplicate]将NaN值替换为平均值

问题描述 投票:2回答:1

这个问题在这里已有答案:

我尝试使用它来替换列功能计数中的NaN值(它的整数范围从1到10)使用groupby(client_id或client _ name),但是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值?

python pandas group-by pandas-groupby fillna
1个回答
3
投票

df.groupby('client_name')['feature_count'].mean()回归系列。

但是您不希望用系列替换空值。相反,您希望使用从系列映射的平均值替换空值。

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

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

更多Pandorable将是利用pd.DataFrame.transform,它为您处理映射部分:

s = df.groupby('client_name')['feature_count'].transform('mean')
df['feature_count'].fillna(s, inplace=True)
© www.soinside.com 2019 - 2024. All rights reserved.