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

如何基于TimeDiff时间差值拆分Pandas DataFrame为分组

Pandas按相邻时间差拆分分组的解决方案

核心思路是生成分组标识列,通过标记时间差≥2小时的拆分点,累加得到分组编号后再进行groupby操作,完全匹配你的需求。

具体实现代码

假设你的DataFrame名为df,包含ID和TimeDiff列:

  1. 标记拆分点:识别出需要开启新分组的位置(当前ID与下一个ID的时间差≥2小时)
split_points = df['TimeDiff'] >= 2
  1. 生成分组编号:将拆分点向下偏移一位,确保当前ID的分组由前一个ID的时间差决定,再累加得到唯一分组ID
df['group_id'] = split_points.shift(1, fill_value=False).cumsum()
  1. 按分组ID进行分组:
groups = df.groupby('group_id')
  1. 查看分组结果:
for idx, group in groups:
    print(f"--------------")
    print(group[['ID', 'TimeDiff']])

逻辑说明

  • split_points.shift(1, fill_value=False):把每个拆分点移到下一行,意味着如果上一个ID与当前ID的时间差≥2小时,当前ID就会开启新分组
  • cumsum():累加拆分点标记,每次遇到True就增加分组编号,自动生成连续的分组ID

运行后会得到你需要的4组结果:

--------------
    ID  TimeDiff
73  73  1.166667
74  74  1.166667
--------------
    ID  TimeDiff
75  75  2.183333
--------------
    ID  TimeDiff
76  76  3.466667
--------------
    ID  TimeDiff
77  77  2.666667
78  78       NaN

注:如果需要将最后一行NaN单独分组,可以额外处理TimeDiff为NaN的情况,比如把split_points改为:

split_points = df['TimeDiff'].fillna(2) >= 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:40:18