[英]Filter out rows with common field where at least one fulfills a condition
我有這樣的數據:
任務 | ID | 地位 |
---|---|---|
任務1 | 123 | 打開 |
任務二 | 123 | 關閉 |
任務三 | 211 | 關閉 |
任務4 | 211 | 關閉 |
任務5 | 564 | 關閉 |
任務6 | 994 | 打開 |
我想刪除具有“打開”狀態的相同 ID 的行。 換句話說,我想刪除所有具有“打開”狀態的 ID。
最終結果將是這樣的:
任務 | ID | 地位 |
---|---|---|
任務三 | 211 | 關閉 |
任務4 | 211 | 關閉 |
任務5 | 564 | 關閉 |
數據:
{'Task': ['Task1', 'Task2', 'Task3', 'Task4', 'Task5', 'Task6'],
'ID': [123, 123, 211, 211, 564, 994],
'Status': ['Open', 'Closed', 'Closed', 'Closed', 'Closed', 'Open']}
我們可以使用打開狀態和groupby
+ cummax
創建一個 boolean 過濾器。
這個想法是,如果一個狀態是打開的,我們將它出現的所有行的相應 ID 標記為 True,然后我們過濾掉所有這些行:
out = df[~df['Status'].eq('Open').groupby(df['ID']).cummax()]
Output:
Task ID Status
2 Task3 211 Closed
3 Task4 211 Closed
4 Task5 564 Closed
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.