我有以下代表员工编号,他们所在的部门及其代码的数据框。
Department Name Employee Number Role Code
0 Dept1 1000 1
1 Dept1 1000 2
2 Dept2 1000 2
4 Dept3 1000 2
5 Dept4 1000 1
0 Dept1 1001 1
1 Dept2 1001 1
2 Dept2 1001 2
4 Dept3 1001 1
5 Dept3 1001 2
我需要以每个员工在每个唯一部门只能拥有代码1或代码2的方式来过滤此数据框。如果他们在同一部门中都有两个角色,则返回两行,因此输出:
Department Name Employee Number Role Code
0 Dept1 1000 1
1 Dept1 1000 2
1 Dept2 1001 1
2 Dept2 1001 2
4 Dept3 1001 1
5 Dept3 1001 2
做到这一点的最佳方法是什么?
答案 0 :(得分:0)
尝试一下:
df.groupby(['Department Name','Employee Number']).filter(lambda x: x['Role Code'].nunique() == 2)
Department Name Employee Number Role Code
0 Dept1 1000 1
1 Dept1 1000 2
6 Dept2 1001 1
7 Dept2 1001 2
8 Dept3 1001 1
9 Dept3 1001 2
答案 1 :(得分:0)
让我们尝试name
:
groupby().nunique()
输出:
mask = df.groupby(['Department Name','Employee Number'])['Role Code'].transform('nunique')
df[mask==2]