我正在使用automobile.csv,它可以在UCI网站上找到。我想替换归一化损失属性中的一些NaN。我认为更好的方法是根据符号计算平均值,因为符号会影响归一化损失的值。
因此,如果NaN的符号值为3,我只需要符号值为3的其他归一化损失的平均值。我该如何实现这一点?
示例表:
symb norm other attrs
1 100 8017 2
1 90 5019 2
-1 20 8017 1
-1 20 8870 1
1 NaN 8305 3
0 10 8305 3
3 200 8221 3
因此,对于NaN,我只想要具有相同符号的其他行的均值
如果我使用
automobile['normalizedlosses'].fillna(automobile['normalizedlosses'].mean(axis=0), inplace=True)
这将用我不想要的相同值替换所有NaN
发布于 2019-04-07 14:49:56
您可以使用带有mean
的GroupBy.transform
来返回与原始Series
大小相同的DataFrame,因此可以通过此Series
使用Series.fillna
s = automobile.groupby('symb')['norm'].transform('mean')
automobile['norm'] = automobile['norm'].fillna(s)
print (automobile)
symb norm other attrs
0 1 100.0 8017 2
1 1 90.0 5019 2
2 -1 20.0 8017 1
3 -1 20.0 8870 1
4 1 95.0 8305 3
5 0 10.0 8305 3
6 3 200.0 8221 3
https://stackoverflow.com/questions/55556243
复制相似问题