将各列的特定权重相乘,并在新列中相加

2024-05-08 21:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三列数据,希望将不同的标量值相乘,然后将它们相加成一列。假设我想把属性_1乘以10,属性_2乘以5,属性_3乘以2

Attribute_1   |   Attribute_2   |   Attribute_3   |    Score    |
_________________________________________________________________
      10              10                15              180
       5               5                10               95

有没有一个优雅的解决方案类似于“sumproduct”的功能?在

例如

^{pr2}$

我不想要下面的解决方案,因为我正在寻找一些更优雅的东西,如果我有许多列和许多权重。在

df['Score'] = df['Attribute_1'] * 10 + df['Attribute_2'] * 5 + df['Attribute_3'] * 2

谢谢你的帮助!在


Tags: 数据功能df属性attribute解决方案权重score
1条回答
网友
1楼 · 发布于 2024-05-08 21:37:57

您可以使用mul方法:

attributes = ["Attribute_1", "Attribute_2", "Attribute_3"]
weights = [10, 5, 2]

df['Score'] = df[attributes].mul(weights).sum(1)
df

# Attribute_1   Attribute_2   Attribute_3   Score
#0         10            10            15     180
#1          5             5            10      95

相关问题 更多 >