2

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

>>> runners_df = pd.DataFrame(runners)
>>> runners_df
   年名英里
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
>>> average_miles_per_year = runners_df.groupby(['year','name'])['miles'].mean().reset_index()
>>> average_miles_per_year
   年名英里
0 2010 保罗 5.0
1 2011 保罗 8.0
2 2012 保罗 10.5
>>>

在这种情况下,我希望用 5.0 填充 Pauls NaN 值,因为 2010 年他的平均英里数是 5。

非常感谢。

4

1 回答 1

2

尝试fillna使用groupbyand 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
于 2020-06-02T18:33:40.863 回答