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

Pandas如何基于日期列生成period标识(全局时间/ID分组双场景)

Pandas 时间间隔生成周期实现方案

前置准备

先将 datetime 列转换为 Pandas 时间格式,避免后续计算出错:

import pandas as pd

# 构造示例数据
data = {
    "ID": [11, 11, 11, 12, 11],
    "datetime": [
        "01-09-2021 10:00:00",
        "01-09-2021 10:15:15",
        "01-09-2021 15:00:00",
        "01-09-2021 15:10:00",
        "01-09-2021 18:00:00"
    ]
}
df = pd.DataFrame(data)
# 转换为时间格式,匹配日-月-年的输入格式
df['datetime'] = pd.to_datetime(df['datetime'], format='%d-%m-%Y %H:%M:%S')

需求1:全局基于时间间隔生成period

直接计算所有行相邻时间差,超过2小时就标记为新周期起点,累计求和后加1得到从1开始的周期编号:

df['period'] = (df['datetime'].diff() > pd.Timedelta(hours=2)).cumsum() + 1

运行结果和给出的预期完全一致。

需求2:按ID分组后组内生成period

对ID列分组,在每个分组内单独计算时间差、生成独立的周期编号:

df['period'] = df.groupby('ID')['datetime'].transform(
    lambda x: (x.diff() > pd.Timedelta(hours=2)).cumsum() + 1
)

运行结果和给出的分组预期完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:39:04