pandas groupby是指nan

fre*_*888 3 python mean dataframe pandas pandas-groupby

我有以下数据帧:

date id  cars
2012 1    4  
2013 1    6
2014 1    NaN    
2012 2    10 
2013 2    20 
2014 2    NaN  
Run Code Online (Sandbox Code Playgroud)

现在,我希望得到多年来汽车的平均值,因为每个id都忽略了NaN的.结果应该是这样的:

date id  cars  result
2012 1    4      5
2013 1    6      5
2014 1    NaN    5
2012 2    10     15
2013 2    20     15
2014 2    NaN    15
Run Code Online (Sandbox Code Playgroud)

我有以下命令:

df["result"]=df.groupby("id")["cars"].mean()
Run Code Online (Sandbox Code Playgroud)

该命令运行没有错误,但结果列只有NaN.我做错了什么?

jez*_*ael 6

使用transform,这将返回与原始大小相同的系列:

df["result"]=df.groupby("id")["cars"].transform('mean')
print (df)
   date  id  cars  result
0  2012   1   4.0     5.0
1  2013   1   6.0     5.0
2  2014   1   NaN     5.0
3  2012   2  10.0    15.0
4  2013   2  20.0    15.0
5  2014   2   NaN    15.0
Run Code Online (Sandbox Code Playgroud)