在熊猫数据框中遍历层次结构

时间:2018-12-08 07:07:32

标签: pandas dictionary hierarchical

我正在处理由层次关系组成的熊猫数据框。考虑下面的数据框giveb:

|---------------------|------------------|
|      Employee       |      Manager     |
|---------------------|------------------|
|          A          |         NaN      |
|---------------------|------------------|
|          B          |         A        |
|---------------------|------------------|
|          C          |         B        |
|---------------------|------------------|

以下假设适用:

  
      
  1. Employee列永远不会为null / Nan
  2.   
  3. 员工可能/可能没有经理
  4.   
  5. 每个经理也是雇员
  6.   
  7. 层次结构中可以有'n'级。示例表包含2个级别,即C-> B-> A   在这种情况下,A是RootManager
  8.   
Expected Output

|---------------------|------------------|------------------|
|      Employee       |      Manager     |   RootManager    |
|---------------------|------------------|------------------|
|          A          |         NaN      |       A          |
|---------------------|------------------|------------------|
|          B          |         A        |       A          |
|---------------------|------------------|------------------|
|          C          |         B        |       A          |
|---------------------|------------------|------------------|

我编写了以下代码来实现此输出。

#Import required libraries  
import pandas as pd 

#Read source data from excel file
data = pd.read_excel('test_data.xlsx') 

#Create a Dictionary for Lookup
dct = dict(zip(data.Employee.values, data.Manager.values))

#A recursive function that takes in employee as an argument and uses  
#dct to iterate through the records and identify the RootManager
def get_parentid(Employee): 
    Manager = dct.get(Employee) 
    if pd.isnull(Manager): 
       return Employee 
    else: 
       get_parentid(Manager) 

#Call the function for each record 
data['RootManager']=data.Employee.map(get_parentid)
print(data)

我测试了我的函数,它返回了正确的值。但是,当我使用map函数时,没有得到所需的输出。下面给出的是代码的输出。

Output:
|---------------------|------------------|------------------|
|      Employee       |      Manager     |   RootManager    |
|---------------------|------------------|------------------|
|          A          |         NaN      |       A          |
|---------------------|------------------|------------------|
|          B          |         A        |      null        |
|---------------------|------------------|------------------|
|          C          |         B        |      null        |
|---------------------|------------------|------------------|

请帮助我找出我要去哪里。预先谢谢您:-)

0 个答案:

没有答案