【问题标题】:Calculating Weighted Average groupby in pandas在 pandas 中计算加权平均 groupby
【发布时间】:2020-08-14 23:48:03
【问题描述】:

我有一个如下所示的数据框:

pd.DataFrame({'A': ['C1', 'C1', 'C1', 'C1', 'C2', 'C2', 'C2'],
                   'W': [0.2, 0.1, 0.5, 0.3, 0.4, 0.3, 0.7],
                   'Y': [2, 0, 4, 3, 2, 2, 3]})

    A    W  Y
0  C1  0.2  2
1  C1  0.1  0
2  C1  0.5  4
3  C1  0.3  3
4  C2  0.4  2
5  C2  0.3  2
6  C2  0.7  3

我想计算每组的加权平均值,并在结果中添加一列。

W = 重量

Y = 值

生成的数据框应如下所示

    A    W  Y   result
0  C1  0.2  2   3.3
1  C1  0.1  0   3.3
2  C1  0.5  4   3.3
3  C1  0.3  3   3.3
4  C2  0.4  2   3.5
5  C2  0.3  2   3.5
6  C2  0.7  3   3.5

我想用 1 行代码(无功能)来实现。

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    在得到重量和价值的乘积之前尝试transform

    df['result'] = df.Y.mul(df.W).groupby(df.A).transform('sum')
    Out[65]: 
    0    3.3
    1    3.3
    2    3.3
    3    3.3
    4    3.5
    5    3.5
    6    3.5
    dtype: float64
    

    【讨论】:

    • 谢谢。如果我想在计算平均值之前将每组的权重 (W) 标准化为 1,这是否也可以在 1 行代码中实现?
    猜你喜欢
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2015-07-03
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多