用组平均值替换 NaN 值
Posted
技术标签:
【中文标题】用组平均值替换 NaN 值【英文标题】:Replacing NaN values with group mean 【发布时间】:2019-03-21 12:50:12 【问题描述】:我有一个由国家、年份和许多其他特征组成的数据框。一个国家有很多年
country year population..... etc.
1 2000 5000
1 2001 NaN
1 2002 4800
2 2000
现在数据框中有很多 NaN。 我想将每列中与特定国家对应的每个 NaN 替换为该列的国家平均值。
例如,对于对应于 2001 年国家 1 的人口列中的 NaN,我想使用国家 1 所有年份的平均人口 = (5000+4800)/2。 现在我正在使用 groupby().mean() 方法来找到每个国家的手段,但我遇到了以下困难: 1-当我确定它有价值时,某些方法会以 NaN 的形式出现。为什么会这样? 2-我如何才能访问 groupby 子句中的特定值?换句话说,我怎样才能用正确的平均值替换每个 NaN?
非常感谢。
【问题讨论】:
【参考方案1】:使用combine_first
和groupby
mean
df.combine_first(df.groupby('country').transform('mean'))
或者
df.fillna(df.groupby('country').transform('mean'))
【讨论】:
以上是关于用组平均值替换 NaN 值的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:用前一个和下一个非缺失值的平均值动态替换 NaN 值
pandas如何使用groupby [duplicate]将NaN值替换为平均值