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

技术需求:用Python实现Excel中父站点的多级子站点数量统计

解决方案

核心思路

这是典型的树形结构遍历问题,先构建父站点到直接子站点的映射关系,再通过**广度优先搜索(BFS)**遍历每个父站点的所有多级子站点,统计总数(用BFS可避免递归深度溢出问题)。

完整代码实现

import pandas as pd
from collections import defaultdict

# 1. 读取Excel文件(替换为你的实际文件名)
df = pd.read_excel(r'C:\Users\jalal.hasain\Desktop\你的站点表.xlsx')

# 2. 定义列名(替换为你Excel中实际的列名,比如'Parent'/'Child')
parent_col = '父站点'
child_col = '子站点'

# 3. 构建父站点到直接子站点的映射字典
parent_to_children = defaultdict(list)
for _, row in df.iterrows():
    parent = row[parent_col]
    child = row[child_col]
    parent_to_children[parent].append(child)

# 4. 编写函数统计所有多级子站点数量
def count_all_descendants(parent):
    count = 0
    visited = set()  # 防止循环引用导致无限遍历
    queue = parent_to_children.get(parent, [])
    
    while queue:
        current_child = queue.pop(0)
        if current_child in visited:
            continue
        visited.add(current_child)
        count += 1
        # 将当前子站点的直接子站点加入队列,继续遍历
        queue.extend(parent_to_children.get(current_child, []))
    
    return count

# 5. 新增统计列并保存结果
df['多级子站点总数'] = df[parent_col].apply(count_all_descendants)

# 查看结果
print(df)
# 保存到新Excel文件
df.to_excel(r'C:\Users\jalal.hasain\Desktop\带子站点统计的站点表.xlsx', index=False)

关键说明

  • 列名替换:如果你的Excel列名不是父站点/子站点,必须修改代码中parent_col和child_col的值。
  • 循环引用处理:若数据存在A→B→A这类循环关系,visited集合会跳过已遍历站点,避免死循环。
  • 遍历方式切换:如果想改用深度优先搜索(DFS),只需把queue.pop(0)改成queue.pop(),统计结果完全一致。
  • 性能适配:763行数据量极小,无论哪种遍历方式都能快速完成计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:40:28