如何将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
相关产品推荐
相关产品推荐

