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

如何识别数据集中最长的Laps连续区间并过滤其余数据?

需求说明

给定如下数据集:

Competitor  Laps  
1        1          1       
2        1          2 
3        1          3   
4        1          4         
5        1          1                
6        1          2       
7        1          3 
8        1          4   
9        1          5
10       1          6 
11       1          7   
12       1          8

需要识别Laps列的最长连续递增区间(连续指数值依次+1),此处第5-12行的区间长度为7,第1-4行长度为3。识别后仅保留该区间内的数据,最终目标数据集如下:

Competitor  Laps          
5        1          1                
6        1          2       
7        1          3 
8        1          4   
9        1          5
10       1          6 
11       1          7   
12       1          8
实现方法(以Python pandas为例)
  • 导入工具并加载数据
    先把数据导入DataFrame,同时保留原始行号作为索引:

    import pandas as pd
    
    # 构造数据集
    data = {
        'Competitor': [1]*12,
        'Laps': [1,2,3,4,1,2,3,4,5,6,7,8]
    }
    df = pd.DataFrame(data, index=range(1,13))
    
  • 标记连续递增分组
    通过计算Laps列与前一行的差值,当差值不等于1时标记为新分组起点,再累计生成分组ID:

    # 计算相邻行差值,第一行差值设为1(作为首个分组起点)
    diff = df['Laps'].diff().fillna(1)
    # 差值≠1时分组ID递增,否则保持原ID
    df['group_id'] = (diff != 1).cumsum()
    
  • 筛选最长分组
    统计每个分组的行数,找到最长分组对应的ID,再提取该分组的数据:

    # 统计各分组的行数
    group_length = df.groupby('group_id').size()
    # 获取最长分组的ID
    longest_group_id = group_length.idxmax()
    # 筛选目标数据并移除临时分组列
    result_df = df[df['group_id'] == longest_group_id].drop('group_id', axis=1)
    
  • 输出结果
    执行后result_df即为所需的最终数据集,打印结果如下:

    print(result_df)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:27:09