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

基于Unique ID #对date_time列排序并实现递增赋值的循环需求

按Unique ID分组排序并分配连续序号的解决方案

嘿,我来帮你搞定这个需求!你想要的是基于Unique ID分组,对每组内的date_time列升序排序,然后给每条记录分配从1开始的连续数值对吧?用Python的Pandas库可以轻松实现,我给你两种实用的方法,还有例子供参考:

方法一:先排序再分组计数(直观易理解)

这种方法先把整个数据集按Unique_ID和date_time排序,再对每个分组用cumcount()生成序号(注意cumcount()从0开始,所以要加1):

import pandas as pd

# 先确保date_time是datetime类型(避免字符串排序出错)
df['date_time'] = pd.to_datetime(df['date_time'])

# 按Unique_ID和date_time升序排序整个数据集
df = df.sort_values(by=['Unique_ID', 'date_time'])

# 分组后分配从1开始的连续序号
df['sequence_num'] = df.groupby('Unique_ID').cumcount() + 1

方法二:用rank直接生成序号(无需提前排序)

如果不想提前修改整个数据集的排序顺序,可以用rank()方法,在分组内对date_time排序并直接生成序号:

import pandas as pd

df['date_time'] = pd.to_datetime(df['date_time'])

# 分组内按date_time升序排名,method='first'保证相同时间时按原始顺序分配序号
df['sequence_num'] = df.groupby('Unique_ID')['date_time'].rank(method='first', ascending=True).astype(int)

效果示例

假设你的原始数据集是这样的:

Unique_IDdate_time
12023-10-02 14:00:00
12023-10-01 10:00:00
22023-09-30 09:00:00
22023-10-01 11:00:00

经过上面任意一种方法处理后,会得到你预期的结果:

Unique_IDdate_timesequence_num
12023-10-01 10:00:001
12023-10-02 14:00:002
22023-09-30 09:00:001
22023-10-01 11:00:002

如果你的数据集用的是其他工具(比如SQL),也可以告诉我,我再给你对应的解决方案哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:34:59