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

如何将Excel指定单元格公式转换为可运行的Python脚本代码

Python实现方案

你给出的计算公式本质是滚动加权平均收益率,每个CateN的结果对应前N个类别的Return值,以对应Recover值为权重计算的加权和,权重=单个Recover值/前N个Recover值的总和,以下是适配需求的实现代码:

基础Python版本(无需第三方库,适合初学者)

# 按Cate1到Cate4的顺序录入数据,分别对应Excel里的B列、C列数值
# 替换列表中的示例值为你实际的Excel单元格数值即可
recover_list = [100, 200, 300, 400]  # 对应B2、B3、B4、B5
return_list = [0.05, 0.03, 0.04, 0.06]  # 对应C2、C3、C4、C5

calc_result = []
for i in range(len(recover_list)):
    # 取前i+1组数据计算(Python列表索引从0开始)
    sub_recover = recover_list[:i+1]
    sub_return = return_list[:i+1]
    sum_recover = sum(sub_recover)
    # 避免分母为0触发报错
    if sum_recover == 0:
        current_value = 0
    else:
        # 按加权逻辑计算当前Cate的结果
        current_value = sum(r * (rc / sum_recover) for r, rc in zip(sub_return, sub_recover))
    calc_result.append({
        "Category": f"Cate{i+1}",
        "Return calc": current_value
    })

# 输出结果
for item in calc_result:
    print(f"{item['Category']}: {item['Return calc']}")

以上代码逻辑完全匹配你给出的4个公式,且支持扩展,后续如果要计算Cate5、Cate6的结果,只需要在recover_list和return_list末尾追加对应单元格的数值即可。

Pandas版本(适合批量处理大量数据)

如果你的数据量较大,也可以用Pandas实现,方便直接对接Excel文件读写:

import pandas as pd

# 构造输入数据,替换数值为你实际的Excel数据即可
df = pd.DataFrame({
    "Recover": [100, 200, 300, 400],
    "Return": [0.05, 0.03, 0.04, 0.06]
}, index=[f"Cate{i+1}" for i in range(4)])

# 批量计算滚动加权平均收益率
df["Return calc"] = df.apply(
    lambda row: (df.loc[:row.name, "Return"] * df.loc[:row.name, "Recover"]).sum() / df.loc[:row.name, "Recover"].sum(),
    axis=1
)

# 打印输出结果表
print(df[["Return calc"]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:54:02