2017-03-06 224 views
1

越来越计我有类似下面的数据框:在大熊猫蟒蛇

boss_id employee_id  designation   
-1   100    CEO 
100   39    Manager 
100   4567    Manager 
100   9843    Manager 
39   47    entry level 
39   45    entry level 
4567   8    entry level 
9843   9    entry level 

在这种boss_id给员工的老板。指定是为员工。 我想知道每个人总共有多少人管理。

例如,由于首席执行官是最终的人选,他应该管理这个数据框中的所有7个人。经理只管理入门级。例如,作为经理的员工39在该数据框中管理2个人。最后,入门级别不管理任何人,​​所以他们的数量应为0

我希望有一个数据帧是这样的:

boss_id employee_id  designation    count 
-1   100    CEO      7 
100   39    Manager     2 
100   4567    Manager     1 
100   9843    Manager     1 
39   47    entry level    0 
39   45    entry level    0 
4567   8    entry level    0 
9843   9    entry level    0 

我不能让我解决这个头和任何帮助将是非常感激!提前致谢。

+0

我不能给你正确的数据框式,但逻辑应该是这样的计数(EMPLOYEE_ID),其中boss_id = selectedItem.employee_id – Prajwal

回答

1

您可以递归调用employee_ids,找到自己的计数

def findCount(employee_id): 
     if df.loc[df['employee_id'] == employee_id]['designation'].as_matrix()[0] == 'd': 
      return 0 
     eIds = df.loc[df['boss_id']==employee_id]['employee_id'].as_matrix() 
     cnt = 0 
     for eid in eIds: 
      cnt += (findCount(eid) + 1) 
     return cnt 

    for index, row in df.iterrows(): 
     cnt = findCount(row['employee_id']) 
     df.loc[index, 'count'] = cnt 
0

groups = df.groupby([boss_id])

去该集团的并得到计数。

`for boss_id, group in groups: 
    count = len(group)`