2017-03-06 153 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)`