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

基于Pandas DataFrame实现员工父子关系层级结构填充

用递归遍历Pandas DataFrame生成员工完整层级路径

给定一个记录员工直属上下级关系的Pandas DataFrame,其中Child是员工ID,Parent是其直属上级ID:

import pandas as pd

data = pd.DataFrame({'Parent':['a','a','b','c','c','f','q','z','k'],
                      'Child':['b','c','d','f','g','h','k','q','w']})

对应的层级树形结构如下:

a
├── b
│   └── d
└── c
    ├── f
    │   └── h
    └── g
z
└── q
    └── k
        └── w

需要生成一个新的DataFrame,展示每个员工的完整层级路径,格式示例如下:

childlevel1level2level3
aa--
ba--
dab-
ca--
fac-
hacf
gac-
zz--
qz--
kzq-
wzqk

由于层级数量不固定,以下是基于递归遍历的实现方案:


实现思路

  1. 定位根节点:找出所有未出现在Child列中的Parent(这类员工无上级),同时将根节点纳入员工列表(原数据中根节点仅作为上级存在,无对应员工行)。
  2. 递归追溯路径:编写递归函数,对每个员工向上遍历所有上级,生成从根节点到当前员工的完整路径。
  3. 整理格式:将所有员工的路径转换为DataFrame,统一层级列名,用'-'填充缺失层级。

代码实现

import pandas as pd

def get_hierarchy_path(child_id, parent_map):
    """递归获取员工的完整层级路径(从根节点到当前员工)"""
    # 当前员工是根节点,直接返回自身
    if child_id not in parent_map:
        return [child_id]
    # 递归获取上级路径,再拼接自身
    parent_id = parent_map[child_id]
    return get_hierarchy_path(parent_id, parent_map) + [child_id]

# 1. 构建「员工ID→直属上级ID」的映射字典
parent_child_map = data.set_index('Child')['Parent'].to_dict()

# 2. 收集所有员工:原数据的员工 + 根节点
all_employees = set(data['Child']).union(set(data['Parent']))

# 3. 为每个员工生成层级数据
hierarchy_rows = []
for emp in all_employees:
    full_path = get_hierarchy_path(emp, parent_child_map)
    row = {'child': emp}
    # 提取路径中除自身外的所有节点,作为层级列
    for idx, level_node in enumerate(full_path[:-1], start=1):
        row[f'level{idx}'] = level_node
    hierarchy_rows.append(row)

# 4. 转换为DataFrame并填充缺失值
result_df = pd.DataFrame(hierarchy_rows).fillna('-')

# 按员工ID排序(可选,匹配示例顺序)
result_df = result_df.sort_values('child').reset_index(drop=True)

print(result_df)

代码说明

  • get_hierarchy_path:递归向上遍历,直到根节点,返回完整路径列表(根节点在前,当前员工在后)。
  • parent_child_map:通过字典实现O(1)时间复杂度的上下级查询,提升遍历效率。
  • 层级列生成:路径中除当前员工外的所有节点,依次对应level1(最高级)到levelN(直接上级)。
  • 缺失值填充:用'-'统一填充无对应层级的位置,保证输出格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:07:15