我有三列数据,想要将不同的标量值乘以每一列,然后将它们求和到一列中。假设我想将 Attibute_1 乘以 10,将 Attribute_2 乘以 5,将 Attribute_3 乘以 2
Attribute_1 | Attribute_2 | Attribute_3 | Score |
_________________________________________________________________
10 10 15 180
5 5 10 95
Run Code Online (Sandbox Code Playgroud)
是否有一个类似于“sumproduct”功能的优雅解决方案?
例如
cols = [df['Attribute_1'], df['Attribute_2'], df['Attribute_3']]
weights = [10, 5, 2]
df['Score'] = cols * weights
Run Code Online (Sandbox Code Playgroud)
我不想要以下解决方案,因为如果我有很多列和很多权重,我正在寻找更优雅的解决方案。
df['Score'] = df['Attribute_1'] * 10 + df['Attribute_2'] * 5 + df['Attribute_3'] * 2
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
您可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |