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

如何用纯Pandas计算企业汇报关系中的层级差距?

纯Pandas实现汇报层级差距(gap)计算

假设某企业的汇报关系由如下Pandas DataFrame定义:

import pandas as pd
ref_pd = pd.DataFrame({'employee':['a','b','c','d','e','f'],'supervisor':['c','c','d','f','f',None]})

具体汇报关系:

  • a、b向c汇报,c向d汇报,d向f汇报
  • e直接向f汇报
  • f为最高管理者,无上级

已知企业层级最多为4层(f为第1层,d、e为第2层,c为第3层,a、b为第4层),需要计算如下DataFrame中的gap列:

gap_pd = pd.DataFrame({'supervisor':['d','d','d','d','d','d'],'employee':['a','b','c','d','e','f'],'gap':[2,2,1,0,None,None]})

gap列的计算逻辑(指定管理者为d时):

  • 员工为d时,gap为0(无层级差距)
  • c直接向d汇报,gap为1
  • a、b通过c间接向d汇报,gap为2
  • e和f最终不向d汇报,gap为Null

以下是纯Pandas的解决方案,无需依赖图计算库:

实现思路

通过迭代向上追溯每个员工的上级,记录追溯步数:找到目标管理者则返回步数,追溯到最高层仍未找到则返回Null。

代码实现

import pandas as pd

# 初始化汇报关系表
ref_pd = pd.DataFrame({'employee':['a','b','c','d','e','f'],'supervisor':['c','c','d','f','f',None]})
# 初始化待计算的gap表(不含gap列)
gap_pd = pd.DataFrame({'supervisor':['d','d','d','d','d','d'],'employee':['a','b','c','d','e','f']})

# 定义计算单个员工gap的函数
def calculate_gap(target_supervisor, employee, ref_df):
    # 员工就是目标管理者,直接返回0
    if employee == target_supervisor:
        return 0
    gap = 0
    current_emp = employee
    while True:
        # 获取当前员工的上级
        supervisor = ref_df.loc[ref_df['employee'] == current_emp, 'supervisor'].values[0]
        # 无上级,说明不在目标汇报链中,返回None
        if supervisor is None:
            return None
        gap += 1
        # 找到目标管理者,返回当前步数
        if supervisor == target_supervisor:
            return gap
        # 继续向上追溯
        current_emp = supervisor

# 批量计算gap列
gap_pd['gap'] = gap_pd.apply(lambda row: calculate_gap(row['supervisor'], row['employee'], ref_pd), axis=1)

# 输出结果
print(gap_pd)

运行结果

supervisor employee   gap
0          d        a   2.0
1          d        b   2.0
2          d        c   1.0
3          d        d   0.0
4          d        e   NaN
5          d        f   NaN

方案说明

  1. 自定义函数calculate_gap负责单个员工的层级差距计算,逻辑简单直观
  2. 使用apply方法批量处理gap_pd的每一行,适配多目标管理者的场景(如果gap_pd中存在多个不同的supervisor值也能正确计算)
  3. 无需额外依赖,完全基于Pandas的基础操作实现,层级数量超过4层时也能兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:33:06