Python 如何基于查找在熊猫中填充NA值?

Python 如何基于查找在熊猫中填充NA值?,python,pandas,data-science,Python,Pandas,Data Science,我有一些NA值,但我想用特定的查找来替换它们。让我给你举个例子 >>> runners_df = pd.DataFrame(runners) >>> runners_df year name miles 0 2010 Paul 6.0 1 2010 Paul 4.0 2 2010 Paul NaN 3 2011 Paul 8.0 4 2011 Paul 8.0 5 2012 Paul 9.

我有一些NA值,但我想用特定的查找来替换它们。让我给你举个例子

>>> runners_df = pd.DataFrame(runners) >>> runners_df year name miles 0 2010 Paul 6.0 1 2010 Paul 4.0 2 2010 Paul NaN 3 2011 Paul 8.0 4 2011 Paul 8.0 5 2012 Paul 9.0 6 2012 Paul 12.0 >>> average_miles_per_year = runners_df.groupby(['year','name'])['miles'].mean().reset_index() >>> average_miles_per_year year name miles 0 2010 Paul 5.0 1 2011 Paul 8.0 2 2012 Paul 10.5 >>> >>>runners\u df=pd.DataFrame(runners) >>>跑步者 年份名称英里数 0 2010保罗6.0 1 2010保罗4.0 2 2010年保罗·南 3 2011保罗8.0 4 2011保罗8.0 5 2012保罗9.0 6 2012保罗12.0 >>>每年平均里程=跑步者分组(['year','name'])['miles']。平均值()。重置指数() >>>每年平均英里数 年份名称英里数 0 2010保罗5.0 2011年1月8日保罗8.0 2 2012年10月5日 >>> 在本例中,我希望Pauls NaN值填充为5.0,因为2010年他的平均英里数为5


非常感谢。

尝试将
fillna
groupby
transform
一起使用:

runners['miles'] = runners['miles'].fillna(runners.groupby(['year','name'])['miles']
                                                  .transform('mean'))
输出:

   year  name  miles
0  2010  Paul    6.0
1  2010  Paul    4.0
2  2010  Paul    5.0
3  2011  Paul    8.0
4  2011  Paul    8.0
5  2012  Paul    9.0
6  2012  Paul   12.0

谢谢!这很有效。如果我想做同样的事情,除了使用一个分类变量,该怎么办。例如,如果有一列是“outdoor_track”,我想用他每年最常运行的轨迹位置来填充缺少的值。显然,转换('mean')在这种情况下不起作用case@Al92尝试中值,该分类值的最常见实例。