【问题标题】:How do I calculate mean of a column but only including certain rows?如何计算列的平均值但仅包括某些行?
【发布时间】:2019-08-28 14:07:27
【问题描述】:

我正在使用可在 UCI 网站上找到的汽车.csv。我想替换归一化损失属性中的一些 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 替换为我不想要的相同值

【问题讨论】:

标签: python pandas dataframe data-science mean


【解决方案1】:

您可以使用GroupBy.transformmean 来返回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

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 2019-04-03
    • 2018-04-09
    • 2016-03-20
    • 2020-03-07
    • 1970-01-01
    • 2015-07-14
    • 2018-10-25
    • 2012-07-12
    相关资源
    最近更新 更多