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

如何用Python按ID分组截断并重新编号指定列

按ID分组截断开头重复runs值并重新编号的实现

问题描述

现有如下Pandas数据集:

import pandas as pd

# 创建数据集
data = {'id': [1, 1, 1, 1, 1,1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3],
        'runs': [6, 6, 6, 6, 6,6,7,8,9,10, 3, 3, 3,4,5,6, 5, 5,5, 5,5,6,7,8],
        'Children': ['No', 'Yes', 'Yes', 'Yes', 'No','No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No'],
        'Days': [123, 128, 66, 120, 141,123, 128, 66, 120, 141, 52,96, 120, 141, 52,96, 120, 141,123,15,85,36,58,89],
        }

df = pd.DataFrame(data)

需求:

  • 按id分组,截断每个分组内开头连续重复的runs值对应的所有行(比如id=1截断开头所有runs=6的行,id=2截断开头所有runs=3的行)
  • 对每个分组剩余的行,从1开始生成连续编号

最终需要得到的结果示例:

idrunsChildrenDays编号
17Yes1281
18Yes662
19Yes1203
110No1414
24Yes1411
25Yes522
26Yes963
36Yes361
37Yes582
38No893

实现步骤与代码

方法思路

  1. 按id分组后,筛选出每个分组内runs值不等于分组第一行runs值的行,实现截断开头重复部分的效果
  2. 对筛选后的分组数据,生成从1开始的连续编号

代码实现

import pandas as pd

# 创建数据集
data = {'id': [1, 1, 1, 1, 1,1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3],
        'runs': [6, 6, 6, 6, 6,6,7,8,9,10, 3, 3, 3,4,5,6, 5, 5,5, 5,5,6,7,8],
        'Children': ['No', 'Yes', 'Yes', 'Yes', 'No','No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No'],
        'Days': [123, 128, 66, 120, 141,123, 128, 66, 120, 141, 52,96, 120, 141, 52,96, 120, 141,123,15,85,36,58,89],
        }

df = pd.DataFrame(data)

# 按id分组筛选掉开头重复的runs行
result = df.groupby('id').apply(
    lambda x: x[x['runs'] != x['runs'].iloc[0]]
).reset_index(drop=True)

# 为每个id分组添加从1开始的连续编号
result['编号'] = result.groupby('id').cumcount() + 1

print("处理后结果:\n", result)

代码解释

  • groupby('id').apply(...):针对每个id分组执行筛选逻辑,只保留runs值与分组首行不同的行,直接截断开头重复的部分
  • reset_index(drop=True):清除分组后产生的多级索引,恢复为常规DataFrame结构
  • groupby('id').cumcount() + 1:对每个id分组从0开始计数,加1后得到从1起始的连续编号

运行代码后即可得到符合需求的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:40:32