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

如何基于连续相同日期为数据行编号?同连续日期同号,日期变化则编号递增

连续相同日期区块编号实现方案

核心逻辑

不需要关心日期本身的取值,只需要按确定的行顺序,将当前行日期和上一行日期做对比,每次出现不一致时编号加1,相同则沿用前一行的编号即可。

常用场景实现

SQL 场景

前提:存在确定行顺序的列(示例中第一列,假设命名为id),日期列命名为dt,需要处理的表名为your_table。
通过窗口函数实现:

SELECT 
  id,
  dt,
  SUM(change_flag) OVER(ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS group_num
FROM (
  SELECT
    id,
    dt,
    -- 与上一行日期不同标记为1,相同标记为0,第一行默认标记为1
    CASE WHEN dt = LAG(dt) OVER(ORDER BY id) THEN 0 ELSE 1 END AS change_flag
  FROM your_table
) t

Excel 场景

前提:行顺序就是Excel默认的行顺序,日期数据放在B列,第一行数据为第2行(第1行为表头),编号放在C列。

  1. 第一行编号C2直接填入1
  2. 第二行开始填入公式:=IF(B3=B2,C2,C2+1)
  3. 把公式下拉到所有数据行即可

Python Pandas 场景

前提:DataFrame已按行顺序排好序,日期列命名为dt

# 对比当前行与上一行日期,不一致的位置标记为True(对应数值1),累加后就是分组编号
df['group_num'] = df['dt'].ne(df['dt'].shift()).cumsum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:06:04