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

Pandas实现类似Excel Vlookup加权求和新增列仅返回最后迭代值如何解决

错误原因

你的代码里index变量每次循环都会被新的单列乘积结果覆盖,没有做累加操作,循环结束后只保留了最后一个股票列(WMT)的计算结果,因此最终Ind列只有WMT的乘积值,没有所有列的累加结果。

解决方案

方案1:修改原有循环逻辑

在循环前初始化累加值,每次循环将对应列的乘积累加到结果中:

# 初始化Ind列为0
dfMerged["Ind"] = 0
for col in dfMerged.columns:
    if col != "Date":
        # 匹配对应股票的PPerc权重
        weight = dfH.loc[dfH["TICKER"] == col, "PPerc"].values[0]
        # 累加乘积
        dfMerged["Ind"] += weight * dfMerged[col]

方案2:使用pandas向量化操作(更简洁高效)

无需手动循环,利用pandas的自动对齐特性直接批量计算:

# 将股票代码和对应权重转为映射字典
weight_map = dfH.set_index("TICKER")["PPerc"].to_dict()
# 提取所有股票列,按列匹配权重后按行求和得到Ind值
dfMerged["Ind"] = dfMerged.drop(columns="Date").mul(weight_map).sum(axis=1)

该写法逻辑更简洁,也避免了手动循环的变量覆盖问题,数据量较大时性能优势更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:03