亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用逗號分隔值進行查找時過濾數據

使用逗號分隔值進行查找時過濾數據

叮當貓咪 2023-09-05 17:23:57
我有以下數據框,表示員工編號、他們所在的部門以及他們在公司中的角色代碼(可以是“1”或“2”)。在“部門名稱”列中,您可以選擇員工所在的部門(命名約定為“XX:部門名稱”,其中 XX 是國家/地區代碼),或者在某些情況下,顯示一組部門,按部門分隔逗號“,”表示員工在這些部門中的角色。它看起來像這樣:  Department Name                Employee Number      Role Code   0  AU:Dept1                         1000                     11  AU:Dept1, AU:Dept3               1000                     22  AU:Dept7                         1000                     13  CZ:Dept3                         1001                     24  CZ:Dept4, CZ:Dept6, CZ:Dept7     1001                     25  CZ:Dept4                         1001                     1 6  PL:Dept1                         1002                     27  PL:Dept2, PL:Dept1               1002                     18  PL:Dept3                         1002                     29  SG:Dept1                         1003                     110 SG:Dept1                         1003                     211 SG:Dept2                         1003                     2員工在每個唯一的部門名稱中只能擁有角色 1 或角色 2,因此我需要創建一個代碼來返回所有沖突的行,其中員工似乎在同一部門中同時擁有角色 1 和角色 2。這將是輸出:  Department Name                Employee Number      Role Code   0  AU:Dept1                         1000                     11  AU:Dept1, AU:Dept3               1000                     24  CZ:Dept4, CZ:Dept6, CZ:Dept7     1001                     25  CZ:Dept4                         1001                     1 6  PL:Dept1                         1002                     27  PL:Dept2, PL:Dept1               1002                     19  SG:Dept1                         1003                     110 SG:Dept1                         1003                     2執行此過濾器的最佳方法是什么?
查看完整描述

2 回答

?
藍山帝景

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 那么您可以過濾數據幀。


查看完整回答
反對 回復 2023-09-05
?
慕的地6264312

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


查看完整回答
反對 回復 2023-09-05
  • 2 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號