python - 过滤掉具有公共(public)字段且至少有一个满足条件的行

标签 python python-3.x pandas dataframe pandas-groupby

我有这样的数据:

<表类=“s-表”> <标题> 任务 ID 状态 <正文> 任务1 123 打开 任务2 123 关闭 任务3 211 关闭 任务4 211 关闭 任务5 564 关闭 任务6 994 打开

我想删除具有相同 ID 且状态为“打开”的行。换句话说,我想删除所有具有“开放”状态的 ID。

最终结果将是这样的:

<表类=“s-表”> <标题> 任务 ID 状态 <正文> 任务3 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']}

最佳答案

我们可以采用 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/

相关文章:

python - 有没有办法在Python中从右到左累加?

python-3.x - 错误无法为 xmlsec 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

python - loc 和 ix 之间的意外差异

python - 时间增量到 Pandas 数据框中的字符串类型

python - Pandas - 将重复的行合并为一行

python - 如何用字符串替换整个 Pandas 单元格的内容?

python imaplib 解析 gmail

Python:for循环 - 在同一行打印

python - 当从 bash 调用脚本时终止子进程

python - 如何将图例标题的一部分加粗(不是整个图例标题)