You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas DataFrame中按分组条件删除指定stuck状态行

解决方法

你可以通过分组标记+条件筛选的方式实现需求,代码如下:

1. 构造示例数据

import pandas as pd

df = pd.DataFrame(
    {'name': ['Adam', 'Adam', 'Adam', 'Bill', 'Bill', 'Charlie', 'Charlie', 'Charlie', 'Charlie'],
     'message': ['start', 'stuck', 'finish', 'start', 'stuck', 'start', 'stuck', 'finish', 'finish']}
)

2. 数据处理

# 标记每个用户是否存在finish记录
df['has_finish'] = df.groupby('name')['message'].transform(lambda x: 'finish' in x.values)
# 按规则筛选行,最后删除临时标记列并重置索引
result = df[(~df['has_finish']) | (df['message'] != 'stuck')].drop(columns='has_finish').reset_index(drop=True)

3. 输出结果

执行后result的内容和你预期的输出完全一致:

name message
0     Adam   start
1     Adam  finish
2     Bill   start
3     Bill   stuck
4  Charlie   start
5  Charlie  finish
6  Charlie  finish

逻辑说明

  • 用groupby('name')['message'].transform给每个用户的所有行同步打上「是否有finish记录」的标记,避免重复分组计算
  • 筛选条件满足任意一个即可保留:
    • 该用户没有finish记录,所有行全部保留
    • 该用户有finish记录,仅保留message不为stuck的行

内容的提问来源于stack exchange,提问作者user270199

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 02:21:02