得到熊猫蟒蛇的数量

时间:2017-03-06 06:11:31

标签: python pandas

我有一个如下数据框:

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

我无法理解这一点,任何帮助都将不胜感激!提前致谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

执行groups = df.groupby([boss_id])

去小组并获得计数。

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