在大PandasPython中得到计数

2024-06-01 05:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下数据帧:

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 

在这个老板id中,给员工的老板。指定为员工。 我想知道每个人总共管理多少人。你知道吗

例如,因为CEO是最终的人,所以他应该管理这个数据框架中的所有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

我想不通这件事,任何帮助都将不胜感激!提前谢谢。你知道吗


Tags: 数据框架id员工employeemanager级别level
2条回答

做一个groups = df.groupby([boss_id])

去小组里数数。你知道吗

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

您可以递归地调用雇员ID并查找其计数

    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

相关问题 更多 >