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

如何使用PowerQuery分步完成多级持股比例的乘积计算

多级股权穿透计算解决方案

基础单链路穿透场景

数据截图
该场景为单条股权链路的比例乘积计算,两种常用实现方式如下:

  • 电子表格(Excel/Google Sheets/WPS表格)实现
    新增辅助列按从最高级母公司到标的公司的顺序标记层级,使用PRODUCT函数配合条件判断即可完成计算。公式参考:=PRODUCT(IF(层级列>=当前计算层级,持股比例列,1)),数组公式需按Ctrl+Shift+Enter触发数组计算,最终输出结果即为最高级母公司对标的公司的最终持股比例。
  • Python Pandas实现
    先对数据按层级排序,调用累积乘积函数即可快速得到结果,代码示例:
    import pandas as pd
    # 读取你的股权数据文件
    df = pd.read_excel("股权数据.xlsx")
    # 按层级从高到低排序,最高级母公司排在最前,标的公司排在最后
    df = df.sort_values("层级", ascending=False)
    # 计算累积乘积,最后一行的计算结果就是最终持股比例
    df["累积持股比例"] = df["持股比例"].cumprod()
    print("最终持股比例:", df.iloc[-1]["累积持股比例"])
    

复杂多母公司穿透场景

复杂场景数据截图
该场景需要先梳理每个母公司到标的公司的所有独立持股路径,单条路径比例相乘后再对同一主体的所有路径结果求和,实现方式如下:

  • 电子表格实现
    手动梳理每个待计算母公司到标的公司的所有持股路径,每条路径单独用PRODUCT计算路径持股比例,最后用SUM函数对同一母公司的所有路径比例求和,即可得到该母公司的最终持股比例。
  • Python 有向图遍历实现
    用networkx库构建股权有向图,遍历待计算母公司到标的公司的所有路径,求和所有路径的比例乘积即可,代码示例:
    import networkx as nx
    # 初始化有向图
    G = nx.DiGraph()
    # 批量添加股权关系,格式为(股东名称, 被投公司名称, {"weight": 持股比例})
    G.add_edges_from([
        ("六级母公司", "五级母公司", {"weight": 1}),
        ("五级母公司", "四级母公司", {"weight": 1}),
        ("二级母公司", "一级母公司", {"weight": 0.8}),
        ("一级母公司", "标的公司", {"weight": 0.4})
        # 其余所有股权关系按上述格式补充即可
    ])
    def calculate_total_ratio(parent_company, target_company):
        total = 0
        # 遍历所有从母公司到标的公司的简单路径
        for path in nx.all_simple_paths(G, source=parent_company, target=target_company):
            path_ratio = 1
            # 计算单条路径的持股比例乘积
            for i in range(len(path)-1):
                path_ratio *= G[path[i]][path[i+1]]["weight"]
            total += path_ratio
        return total
    # 调用示例:计算六级母公司对标的公司的持股比例
    print(calculate_total_ratio("六级母公司", "标的公司"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:24:03