我正在尝试使用Python数据框的两列计算加权总和。
数据框结构:
unique_id weight value
1 0.061042375 20.16094523
1 0.3064548 19.50932003
1 0.008310739 18.76469039
1 0.624192086 21.25
2 0.061042375 20.23776924
2 0.3064548 19.63366165
2 0.008310739 18.76299395
2 0.624192086 21.25
.......
我想要的输出结果是:
每个unique_id的加权和=总和((权重)*(数值))
例如: unique_id为1的加权和=((0.061042375*20.16094523)+(0.3064548*19.50932003)+(0.008310739*18.76469039)+(0.624192086*21.25))
我查看了这个答案 (计算一个带有Pandas/dataframe的加权平均) 但无法找出将其应用于我的特定情况的正确方法。
根据上述答案,我正在进行以下操作:
#Assume temp_weighted_sum_dataframe is the dataframe stated above
grouped_data = temp_weighted_sum_dataframe.groupby('unique_id') #I think this groups data based on unique_id values
weighted_sum_output = (grouped_data.weight * grouped_data.value).transform("sum") #This should allow me to multiple weight and value for every record within each group and sum it up to one value for that group.
# On above line I am getting the error > TypeError: unsupported operand type(s) for *: 'SeriesGroupBy' and 'SeriesGroupBy'
任何帮助都将不胜感激,谢谢。
[['weight']]
没有value
属性。 - Quang Hoangagg
的一个怪癖。它只能在[['...']]上运行,但在['...']上会出错 :) - Andy L.