我有一个由国家,年份和许多其他功能组成的数据框。一个国家有很多年
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?
非常感谢。
答案 0 :(得分:1)
将combine_first
与groupby
mean
一起使用
df.combine_first(df.groupby('country').transform('mean'))
或
df.fillna(df.groupby('country').transform('mean'))