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

Pandas如何提取DataFrame中flag列连续为1且大小大于2的分组

提取DataFrame中flag列连续为1且长度大于2的分组

示例输入

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

原始数据输出:

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

预期输出

A  flag
7  40     1
8  45     1
9  56     1

实现代码

核心逻辑是先给连续相同的flag值分配独立分组ID,再按分组规则做筛选:

# 为连续相同的flag值生成分组标识
df2["group_id"] = (df2["flag"] != df2["flag"].shift()).cumsum()

# 筛选flag=1、且分组行数大于2的记录,删除临时生成的分组ID列
res = df2[
    (df2["flag"] == 1)
    & (df2.groupby("group_id")["group_id"].transform("count") > 2)
].drop(columns="group_id")

print(res)

运行代码后输出结果和预期完全一致。

注:索引3、4位置的连续1分组长度为2,不满足长度大于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.29 14:03:27