gpt4 book ai didi

python - 如何计算列的平均值但只包括某些行?

转载 作者:行者123 更新时间:2023-12-01 01:03:55 25 4
gpt4 key购买 nike

我正在使用automotive.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 替换为我不想要的相同值

最佳答案

您可以使用GroupBy.transform使用mean返回Series,其大小与原始DataFrame相同,因此可以使用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

关于python - 如何计算列的平均值但只包括某些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55556243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com