本文介绍如何利用pandas的`.dot()`方法,结合权重字典对指定列进行加权乘积后求和,快速生成新列(如score),避免手动编写冗长表达式,兼顾可读性与扩展性。
在数据分析中,常需基于多列数值按不同权重计算综合得分(例如篮球球员的效率分:pts × 1 + ast × 1.5 + reb × 1.2 + tov × (−1))。若硬编码运算逻辑(如 df[‘pts’] + df[‘ast’]*1.5 + …),不仅易出错、难维护,且新增/调整权重时需反复修改代码。更优雅的方式是将权重抽象为字典,并通过向量化操作自动完成列筛选、加权与求和。
Pandas 提供了 .dot() 方法,专为矩阵/向量点积设计,天然适配此类场景:它会自动对齐 DataFrame 的列名与 Series 的索引,仅对共有的键名执行逐列乘法并横向求和,其余列(如本例中的 ‘oth’ 和 ‘id’)被自动忽略——这恰好满足“非所有列都参与计算”的需求。
以下是完整实现步骤:
-
准备数据与权重字典