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

pandas DataFrame如何按指定列为分组内唯一值分配编号

实现方法

直接使用groupby搭配factorize即可完成需求,factorize会按值的首次出现顺序生成从0开始的连续整数ID,相同值会映射到同一个ID,加1后正好匹配你的编号规则,且会保留原始行顺序。

完整可运行代码如下:

import pandas as pd

# 构建示例数据
df = pd.DataFrame({
    'Unique Id': ['H1', 'H1', 'H1', 'H1', 'H1', 'H2', 'H2', 'H2'],
    'Date': ['2/03/2022', '2/03/2022', '2/03/2022', '3/03/2022', '4/03/2022', '9/03/2022', '9/03/2022', '10/03/2022']
})

# 按规则生成Count列
df['Count'] = df.groupby('Unique Id')['Date'].transform(lambda col: col.factorize()[0] + 1)

运行后得到的结果完全匹配预期:

Unique Id       Date  Count
0        H1  2/03/2022      1
1        H1  2/03/2022      1
2        H1  2/03/2022      1
3        H1  3/03/2022      2
4        H1  4/03/2022      3
5        H2  9/03/2022      1
6        H2  9/03/2022      1
7        H2  10/03/2022      2

说明

  • 该逻辑不需要提前对数据去重或排序,会自动保留原始DataFrame的行顺序
  • 同分组内重复出现的Date值会被分配相同编号,首次出现的新Date值编号自动递增
  • Date列为字符串或datetime格式均不影响计算结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:24:23