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

Python中如何在flag列值变为1时拆分pandas DataFrame

pandas按flag列值变化拆分DataFrame实现

需求规则

当flag列的取值变化为1时,在该位置对DataFrame切分,切分后丢弃所有flag=1的行,仅保留切分得到的非1值连续数据段。

测试数据

import pandas as pd
df = pd.DataFrame({
    'A':[1,20,40,45,56,1,20,40,45,56],
    'flag':[3,2,4,1,1,3,3,1,1,1]
})

原始DataFrame打印结果:

A  flag
0   1     3
1  20     2
2  40     4
3  45     1
4  56     1
5   1     3
6  20     3
7  40     1
8  45     1
9  56     1

期望输出

  • group_1:
A  flag
0   1     3
1  20     2
2  40     4
  • group_2:
A  flag
0   1     3
1  20     3

实现代码

核心逻辑是先识别切分边界生成分组ID,过滤无效行后按分组ID拆分即可:

# 识别切分边界:当前行flag为1、上一行flag不为1时,判定为一个分组的结束点,累加分组ID
df['group_tag'] = (df['flag'].eq(1) & df['flag'].shift().ne(1)).cumsum()
# 过滤掉flag=1的行,按分组标签拆分后重置索引
split_groups = [sub_df.reset_index(drop=True) for _, sub_df in df[df['flag'] != 1].groupby('group_tag')]

# 按顺序取出分组
group_1 = split_groups[0]
group_2 = split_groups[1]

执行后打印group_1、group_2即可得到完全匹配期望的结果。

内容的提问来源于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.30 03:06:18