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

如何提取表中pattern连续序列长度>=3的对应行?

实现方案

核心逻辑

由于Id已经按升序排列,连续递增1的pattern序列满足:pattern值 - 该行的连续排序序号为固定值,以此作为分组标识即可区分不同的连续序列,后续过滤出长度≥3的分组即可拿到目标数据。

1. SQL 实现(支持窗口函数的数据库通用)

WITH seq_group AS (
    SELECT 
        Id,
        pattern,
        -- 若Id非连续自增,可替换为 pattern - ROW_NUMBER() OVER(ORDER BY Id ASC) 保证通用性
        pattern - Id AS group_id
    FROM 你的表名
),
group_len_calc AS (
    SELECT 
        group_id,
        COUNT(*) AS seq_length
    FROM seq_group
    GROUP BY group_id
)
SELECT s.Id, s.pattern
FROM seq_group s
INNER JOIN group_len_calc g ON s.group_id = g.group_id
WHERE g.seq_length >= 3
ORDER BY s.Id ASC;

运行后输出结果和你给出的预期完全一致:3-6行、9-11行都会被返回,长度不足3的序列会被过滤。

2. Python Pandas 实现

import pandas as pd

# 示例数据集,可替换为你自己读取的数据集
df = pd.DataFrame({
    "Id": range(1, 12),
    "pattern": [1,2,1,2,3,4,1,2,1,2,3]
})

# 生成分组标识
df["group_id"] = df["pattern"] - df["Id"]
# 过滤长度≥3的分组
result = df[df.groupby("group_id")["group_id"].transform("count") >= 3].drop("group_id", axis=1)

print(result)

输出结果:

Id  pattern
2   3        1
3   4        2
4   5        3
5   6        4
8   9        1
9  10        2
10 11        3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:57:02