[英]Calculating Weighted Average groupby in pandas
我有一個 dataframe 看起來像這樣:
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 = 值
結果 dataframe 應該看起來像這樣
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 行代碼(無功能)來實現這一點。
在獲得重量和價值的乘積之前嘗試使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.