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

如何用Pandas按同一ID每5条记录生成带序号的新ID

按ID分组每5条生成带序号的新ID

问题场景

现有如下Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({'id':[100,100,100,100,100,100,100,100,100,100,100,200,200,200,200,200,200]})

需要基于id列,每5条相同id的记录生成一个带序号的新ID:

  • 100有11条记录,生成100_1(前5条)、100_2(后6条)
  • 200有6条记录,生成200_1
  • 若某id(如400)有15条记录,生成400_1、400_2、400_3

解决方案

通过分组累计计数、整数除法计算组号,最后拼接生成新ID:

# 1. 按id分组,计算组内累计序号(从0开始),每5条划分为一组,组号从1开始
df['group_num'] = df.groupby('id').cumcount() // 5 + 1
# 2. 拼接原id和组号,生成新ID
df['new_id'] = df['id'].astype(str) + '_' + df['group_num'].astype(str)
# 3. 提取唯一的新ID,生成结果DataFrame
out = pd.DataFrame(df['new_id'].unique(), columns=['new_id'])

输出结果

new_id
0   100_1
1   100_2
2   200_1

关键逻辑说明

  • groupby('id').cumcount():为每个id分组内的记录从0开始生成连续序号
  • // 5:整数除法,将每5条记录划分为一组(0-4对应第1组,5-9对应第2组,以此类推)
  • +1:将组号从0起始转为1起始,符合需求中的序号格式
  • unique():提取每个id对应的所有分组新ID,避免重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:05:13