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

如何迭代为DataFrame列分配权重计算加权均值并存储到原表

pandas DataFrame多列加权均值列表适配实现方案

报错原因

你提供的迭代代码score_df["weighted_avg"] += weight * score_df[feature]报错的核心原因是首次累加前没有初始化weighted_avg列的初始值为0,直接执行+=操作会因目标列不存在触发报错。

适配列表场景的实现方案

首先提前准备顺序一一对应的特征列列表、权重列表:

# 特征与权重顺序严格对应即可,可按需修改长度
feature_list = ["s1", "s2", "s3"]
weight_list = [0.5, 0.25, 0.25]

方案1:迭代累加修正版

和你原来的实现逻辑一致,仅增加初始化步骤即可正常运行:

# 先初始化加权均值列为0
score_df["weighted_avg"] = 0
# 迭代累加计算
for feature, weight in zip(feature_list, weight_list):
    score_df["weighted_avg"] += weight * score_df[feature]

方案2:向量化运算版(性能更优)

无需显式迭代,适合特征列数量较多的场景:

score_df["weighted_avg"] = (score_df[feature_list] * weight_list).sum(axis=1)

以上两种方案的计算结果与你手动编写的固定列加权代码完全一致,仅需调整feature_list和weight_list的内容即可适配任意数量的数值列,无需修改核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:00