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

如何将DataFrame数据按3小时时间序列分组至最近后续时间点

实现方法

步骤1:将时间序列转为datetime类型

首先把生成的字符串格式时间序列转换为Pandas的datetime类型,方便后续时间匹配:

import pandas as pd

# 原生成的字符串时间序列
timeSeries = pd.date_range("2021-05-18", "2022-05-19", freq="3H").strftime('%Y-%m-%d %H:%M:%S')
# 转为datetime类型
time_series_dt = pd.to_datetime(timeSeries)

步骤2:确保DataFrame索引为datetime格式

检查并转换你的DataFrame索引为datetime类型(如果还不是的话):

# 转换索引为datetime格式
df.index = pd.to_datetime(df.index)

步骤3:匹配最近的后续时间节点

使用searchsorted方法,通过side='right'参数找到每个索引对应的第一个大于当前时间的序列节点,也就是最近的后续时间点:

# 获取每个索引对应的后续时间点位置
match_indices = time_series_dt.searchsorted(df.index, side='right')
# 将匹配到的时间点添加为DataFrame的新列
df['group_time'] = time_series_dt[match_indices]

步骤4:按匹配的时间节点分组

现在可以直接按新添加的group_time列进行分组操作,比如统计每个分组的ID数量:

# 按分组时间聚合数据
grouped_data = df.groupby('group_time')
# 示例:查看每个分组的ID数量
print(grouped_data['ID'].count())

说明

  • searchsorted(side='right')会返回第一个大于目标值的元素位置,正好满足“最近的后续时间节点”的需求,比如示例中的2021-05-18 23:49:02会匹配到2021-05-19 00:00:00(注:原代码中strftime生成的24:00:00实际会被Pandas解析为次日的00:00:00,属于正常的时间格式转换)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:18:55