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

使用pandas/python按ID分组生成日期计数day列

Pandas 实现分组按日期递增生成Day列

前置处理

首先确保d_of_stay字段是日期类型,避免字符串排序导致顺序错误:

import pandas as pd

# 示例数据构造
df = pd.DataFrame({
    'ID': [1,1,1,2,2],
    'd_of_stay': ['2021-03-01','2021-03-02','2021-03-03','2021-03-05','2021-03-06']
})

# 转日期类型
df['d_of_stay'] = pd.to_datetime(df['d_of_stay'])
# 先按ID、日期排序,保证顺序正确
df = df.sort_values(by=['ID', 'd_of_stay'], ignore_index=True)

实现方案

根据规则差异选对应写法即可:

  • 方案1:严格按组内日期排序顺序编号(不考虑日期间隔,断档也连续计数)
    完全匹配需求描述里“后续日期按时间先后顺序依次递增”的规则,不管日期有没有断档,排序后第N条就标记为Day N-1:

    df['day'] = 'Day ' + df.groupby('ID').cumcount().astype(str)
    

    运行结果和你给出的目标样例完全一致。

  • 方案2:按与组内首日的实际间隔天数编号(断档会跳号)
    如果业务逻辑是计算距离首次记录日期的自然日差,例如同ID下首日是3月1日(Day0),3月3日会标记为Day2,用这个写法:

    df['day'] = 'Day ' + (df['d_of_stay'] - df.groupby('ID')['d_of_stay'].transform('min')).dt.days.astype(str)
    

提示:如果数据中存在同ID同日期的重复记录,方案1会按行顺序依次递增编号,方案2会给相同日期赋予相同的Day值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:15:29