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

Pandas如何基于两列条件识别连续行并拆分DataFrame分组

Pandas按连续条件段拆分分组实现

实现逻辑

  • 逐行标记是否符合筛选规则:flag_0 == 3 且 flag_1 == 1
  • 对不符合条件的行做累计求和,自动为每个独立的连续符合条件的行段分配唯一组ID
  • 过滤掉不符合条件的行,按组ID拆分即可得到所有目标分组

完整代码

import pandas as pd

# 构造测试DataFrame
df = pd.DataFrame({
    'flag_0':[1,2,3,1,2,3,1,2,3,3,3,3,1,2,3,1,2,3,4,4],
    'flag_1':[1,2,3,1,2,3,1,2,1,1,1,1,1,2,1,1,2,3,4,4],
    'dd':[1,1,1,7,7,7,8,8,8,1,1,1,7,7,7,8,8,8,5,7]
})

# 标记匹配筛选条件的行
df['is_match'] = (df['flag_0'] == 3) & (df['flag_1'] == 1)
# 为连续匹配段生成独立组ID
df['gid'] = (~df['is_match']).cumsum()
# 拆分得到分组列表,自动过滤不匹配行,删除过程中生成的辅助列
group_list = [g.drop(columns=['is_match', 'gid']) for _, g in df[df['is_match']].groupby('gid')]

结果说明

遍历group_list即可按顺序得到所有符合要求的分组:

  • 第一个分组:
flag_0  flag_1  dd
8       3       1   8
9       3       1   1
10      3       1   1
11      3       1   1
  • 第二个分组:
flag_0  flag_1  dd
14       3       1   7

按照给出的测试数据,索引8的行同样满足flag_0=3、flag_1=1且与9-11行连续,因此归入第一个分组。如果有额外过滤规则,可在is_match标记步骤补充对应判断条件即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:39:14