【发布时间】:2020-02-21 01:29:16
【问题描述】:
我正在尝试生成 pandas 数据透视表,该表计算一系列数据列中的值的平均值,这些数据列由固定权重列中的值加权,并且我正在努力寻找一种优雅而有效的方法来做到这一点。
df = pd.DataFrame([['A',10,1],['A',20,0],['B',10,1],['B',0,0]],columns=['Group','wt','val'])
Group wt val
0 A 10 1
1 A 20 0
2 B 10 1
3 B 0 0
我想按 Group 分组并返回一个新的权重(df.wt 的总和 -- easy peasy)和由 df.wt 加权的 df.val 的平均值来产生这个:
Group weight val
0 A 30 0.333
1 B 10 1.000
在实际应用程序中,有大量的 val 列和一个 weight 列以及我想要应用不同 aggfunc 的其他列。所以虽然我意识到我可以通过直接应用 groupby 来做到这一点,但它更混乱。有没有办法在 pivot_table 中滚动我自己的 aggfunc 来计算加权平均值?
【问题讨论】: