2 回答
![?](http://img1.sycdn.imooc.com/545865da00012e6402200220-100-100.jpg)
TA贡献1843条经验 获得超7个赞
你可以做类似的事情
df['both_role'] = df.groupby('Employee Number')['Role Code'].isin([1]).astype(int) * df.groupby('Employee Number')['Role Code'].isin([2]).astype(int) df[df.both_role == 1]
您可以使用员工编号进行分组,并检查每个用户的角色代码是否包含 1 和 2。如果它同时包含 1 和 2 那么您可以过滤数据帧。
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
TA贡献1817条经验 获得超6个赞
让我们尝试拆分部门名称,然后groupby找出['Employee', 'Name']哪些员工具有两个角色nunique:
(df.assign(Name=df['Department Name'].str.split(', '))
.explode('Name')
.loc[lambda x:x.groupby(['Employee Number','Name'])
['Role Code'].transform('nunique') ==2 ]
.drop('Name', axis=1)
)
输出:
Department Name Employee Number Role Code
0 AU:Dept1 1000 1
1 AU:Dept1, AU:Dept3 1000 2
4 CZ:Dept4, CZ:Dept6, CZ:Dept7 1001 2
5 CZ:Dept4 1001 1
6 PL:Dept1 1002 2
7 PL:Dept2, PL:Dept1 1002 1
9 SG:Dept1 1003 1
10 SG:Dept1 1003 2
添加回答
举报