Python DataFrame:将nan值替换为某个组的平均值

Python DataFrame:将nan值替换为某个组的平均值,python,pandas,missing-data,Python,Pandas,Missing Data,我有一个熊猫数据框,里面填充了实数和类别,但里面有一些nan值 如何用分组类别的平均值或中位数替换NaN A B 0 model 2 0.979728 1 model 1 0.912674 2 model 2 0.540679 3 model 1 2.027325 4 model 2 NaN 5 model 1 NaN 6 model 3 -0.612343 7 mo

我有一个熊猫数据框,里面填充了实数和类别,但里面有一些nan值

如何用分组类别的平均值或中位数替换NaN

      A         B      
0  model 2    0.979728 
1  model 1    0.912674 
2  model 2    0.540679 
3  model 1    2.027325 
4  model 2        NaN  
5  model 1        NaN  
6  model 3   -0.612343 
7  model 1   1.033826  
8  model 1   1.025011  
9  model 2   -0.795876 
在这种情况下,我想用它们的相对平均值或中位数替换两个nan


提前感谢您

您可以使用
groupby+transform+fillna

>>> df['B'] = df.B.fillna(df.groupby('A')['B'].transform('mean'))                                                                                                                                                          
>>> df                                                                                                                                                                                                                        

        A         B
0 model 2  0.979728
1 model 1  0.912674
2 model 2  0.540679
3 model 1  2.027325
4 model 2  0.241510
5 model 1  1.249709
6 model 3 -0.612343
7 model 1  1.033826
8 model 1  1.025011
9 model 2 -0.795876

非常好的thx,但用这种方法我必须手动估算平均值,但我的数据集非常大,所以用这种方法的工作量将非常大。可以这样使用groupby吗?group_data_median=df.groupby(['A'])['B'].median()#求和函数