pandas groupby是指nan

时间:2017-05-31 12:33:22

标签: python pandas dataframe mean pandas-groupby

我有以下数据框:

date id  cars
2012 1    4  
2013 1    6
2014 1    NaN    
2012 2    10 
2013 2    20 
2014 2    NaN  

现在,我希望多年来为每个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

我有以下命令:

df["result"]=df.groupby("id")["cars"].mean()

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

1 个答案:

答案 0 :(得分: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