pandas 用 nan 按平均值分组
pandas groupby mean with nan
我有以下数据框:
date id cars
2012 1 4
2013 1 6
2014 1 NaN
2012 2 10
2013 2 20
2014 2 NaN
现在,我想要忽略 NaN 的每个 id 获取多年来汽车的平均值。结果应该是这样的:
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。
我做错了什么?
使用transform
,这个returns一个和原来大小一样的系列:
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
我有以下数据框:
date id cars
2012 1 4
2013 1 6
2014 1 NaN
2012 2 10
2013 2 20
2014 2 NaN
现在,我想要忽略 NaN 的每个 id 获取多年来汽车的平均值。结果应该是这样的:
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。 我做错了什么?
使用transform
,这个returns一个和原来大小一样的系列:
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