我想用该列的平均数填充na,但只针对与缺失值相同类别的代表
data = {'Class': ['Superlight', 'Aero', 'Aero', 'Superlight', 'Superlight', 'Superlight', 'Aero', 'Aero'],
'Weight': [5.6, 8.6, np.nan, 5.9, 5.65, np.nan, 8.1, 8.4]}
Class Weight
0 Superlight 5.60
1 Aero 8.60
2 Aero NaN
3 Superlight 5.90
4 Superlight 5.65
5 Superlight NaN
6 Aero 8.10
7 Aero 8.40
我知道我能做到:
df.Weight.fillna(df.Weight.mean())
但这将用整个列的平均值来填充缺少的值
下面将用AERO类别的平均值替换空值(这更好,但仍然不好,因为我必须分别对每个类别/类别执行此操作)
df.Weight.fillna(df[df.Class == 'Aero'].Weight.mean())
是否可以对其进行抽象,以便自动获取当前行的类,并找到属于该类别的值的平均值,然后替换它,而无需对类值进行硬编码?希望这是有道理的
groupby + transform
然后填写:可能您可以使用
groupby
和apply
对每个组进行尝试:相关问题 更多 >
编程相关推荐