我正在处理由层次关系组成的熊猫数据框。考虑下面的数据框giveb:
|---------------------|------------------|
| Employee | Manager |
|---------------------|------------------|
| A | NaN |
|---------------------|------------------|
| B | A |
|---------------------|------------------|
| C | B |
|---------------------|------------------|
以下假设适用:
- Employee列永远不会为null / Nan
- 员工可能/可能没有经理
- 每个经理也是雇员
- 层次结构中可以有'n'级。示例表包含2个级别,即C-> B-> A 在这种情况下,A是RootManager
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 |
|---------------------|------------------|------------------|
请帮助我找出我要去哪里。预先谢谢您:-)