在大熊猫蟒蛇
问题描述:
越来越计我有类似下面的数据框:在大熊猫蟒蛇
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
我不能让我解决这个头和任何帮助将是非常感激!提前致谢。
答
您可以递归调用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
答
做groups = df.groupby([boss_id])
去该集团的并得到计数。
`for boss_id, group in groups:
count = len(group)`
我不能给你正确的数据框式,但逻辑应该是这样的计数(EMPLOYEE_ID),其中boss_id = selectedItem.employee_id – Prajwal