我有这样的数据:
我想删除具有相同 ID 且状态为“打开”的行。换句话说,我想删除所有具有“开放”状态的 ID。
最终结果将是这样的:
数据:
{'Task': ['Task1', 'Task2', 'Task3', 'Task4', 'Task5', 'Task6'],
'ID': [123, 123, 211, 211, 564, 994],
'Status': ['Open', 'Closed', 'Closed', 'Closed', 'Closed', 'Open']}
最佳答案
我们可以采用 Open Statuses 和 groupby
+ cummax
来创建 bool 过滤器。
想法是,如果状态为打开,我们将其出现的所有行的相应 ID 标记为 True,然后过滤掉所有此类行:
out = df[~df['Status'].eq('Open').groupby(df['ID']).cummax()]
输出:
Task ID Status
2 Task3 211 Closed
3 Task4 211 Closed
4 Task5 564 Closed
关于python - 过滤掉具有公共(public)字段且至少有一个满足条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71518533/