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

如何将Pandas DataFrame按时间差阈值分割为时间簇子数据集

高效实现方案

核心思路是通过Pandas向量化操作生成分组ID,再用groupby直接拆分,全程无显式循环,性能远高于逐行遍历,百万级数据也可以在毫秒级完成处理。


完整实现代码

import pandas as pd

# 你的原有预处理逻辑:按时间排序、计算相邻行时间差
df = df.sort_values("Time")
df['t_dif'] = df['Time'] - df['Time'].shift(-1)

# 新增分组拆分逻辑
threshold = 40
# 标记分割点:相邻时间差绝对值≥阈值的位置需要切分
split_points = df['t_dif'].abs() >= threshold
# 生成连续分组ID:分割点的下一行属于新分组,累加计数得到唯一组号
df['group_id'] = split_points.shift(fill_value=False).cumsum()

# 拆分得到子DataFrame列表,索引0对应你说的df1,索引1对应df2,以此类推
sub_dfs = [group for _, group in df.groupby('group_id')]

# 如果不需要保留t_dif、group_id辅助列,可以用下面的代码替换上面的拆分逻辑
# sub_dfs = [group.drop(columns=['t_dif', 'group_id']) for _, group in df.groupby('group_id')]

效果说明

输出sub_dfs[0]、sub_dfs[1]即可匹配你给出的df1、df2预期效果,你可以直接按照索引取用对应的子数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:42:01