You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pythonic方式为Pandas DataFrame生成加权求和新列?

高效实现带权重的列值求和生成新列

直接用Pandas的向量化操作就能解决,完全不用手动写每一列的计算,不管列数是10还是100都适用,核心思路是给每一列分配对应权重后按行求和。

方法一:用mul+sum(直观易读)

先确定你要计算的目标列列表,然后生成对应权重数组,再用mul给每一列乘权重,最后按行求和:

import pandas as pd
import numpy as np

# 假设你的DataFrame是df,目标列是cols(比如取前10列,或指定列名列表)
cols = df.columns[:10]  # 若列是col1-col100,可写成cols = [f'col{i}' for i in range(1, 101)]

# 生成权重:对应11-1, 11-2,...11-n(n为列数)
weights = 11 - np.arange(1, len(cols)+1)

# 计算新列
df['newcol'] = df[cols].mul(weights).sum(axis=1)

方法二:矩阵乘法(性能更优,适合大列数)

当列数很多时,直接用矩阵乘法@效率更高:

df['newcol'] = df[cols].values @ weights

验证示例

比如构造一个小数据集测试:

df = pd.DataFrame({
    'col1': [1, 2],
    'col2': [3, 4],
    'col3': [5, 6]
})
cols = df.columns
weights = 11 - np.arange(1, len(cols)+1)  # 权重为[10,9,8]
df['newcol'] = df[cols].mul(weights).sum(axis=1)
# 结果:第一行1*10+3*9+5*8=77,第二行2*10+4*9+6*8=104,和手动计算一致

内容的提问来源于stack exchange,提问作者Brian Vu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:01:08