将特定的权重乘以列,并在新的列中加在一起[英] Multiply specific weights to columns and add together in new column

本文是小编为大家收集整理的关于将特定的权重乘以列,并在新的列中加在一起的处理方法,想解了将特定的权重乘以列,并在新的列中加在一起的问题怎么解决?将特定的权重乘以列,并在新的列中加在一起问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有三列数据,想将不同的标量值乘以每列,然后将它们相加成一列.假设我想将 Attibute_1 乘以 10,Attribute_2 乘以 5,Attribute_3 乘以 2

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

是否有类似于"sumproduct"类功能的优雅解决方案?

例如

cols = [df['Attribute_1'], df['Attribute_2'], df['Attribute_3']]
weights = [10, 5, 2]
df['Score'] = cols * weights

我不想要以下解决方案,因为如果我有很多列和很多权重,我正在寻找更优雅的东西.

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

感谢您的帮助!

推荐答案

可以使用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

本文地址:https://www.itbaoku.cn/post/1728160.html