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

如何对Pandas时间序列进行反向重采样?

实现Pandas时间序列反向重采样(以区间结束时间为标签)

你可以通过反转序列后再重采样的方式快速实现需求,步骤如下:

步骤1:生成测试数据(你的原代码)

import pandas as pd
import numpy as np

index = pd.date_range('01-01-2018 00:00:00', '01-11-2018 23:59:00', freq='1T')
randint = np.random.randint(low=0, high=9, size=(len(index), 1))

df = pd.DataFrame(randint, index=index, columns=['random'])

步骤2:反转序列+重采样+调整顺序

# 1. 将原序列反转(从最晚时间到最早时间排列)
df_reversed = df.iloc[::-1]

# 2. 对反转后的序列重采样:
# - freq='5T':按5分钟区间聚合
# - label='right':用区间的结束时间作为标签(对应原序列中该区间的最晚时间)
# - closed='right':区间包含右边界(确保最后一个时间点被包含在第一个分组)
ohlc_reversed = df_reversed.resample('5T', label='right', closed='right')['random'].ohlc()

# 3. 将结果按时间从晚到早排序(匹配你示例中的输出顺序)
# 如果需要从早到晚排序,改为 ascending=True
ohlc_result = ohlc_reversed.sort_index(ascending=False)

print(ohlc_result.tail())

方法说明

  • 反转序列后,重采样会从原序列的最后一个时间点开始往前划分5分钟区间
  • label='right'确保每个分组的标签是该区间的结束时间(也就是原序列中该分组的最晚时间)
  • 最终结果完全匹配你需要的反向分组、以区间结束时间为标签的OHLC格式

备选:自定义分组(更灵活)

如果需要非固定频率的区间划分,可使用自定义分组逻辑:

last_time = df.index[-1]
# 生成从最后一个时间点往前推的5分钟间隔标签
group_labels = pd.date_range(end=last_time, periods=int(np.ceil(len(df)/5)), freq='-5T')
# 构建区间并为每个时间点分配分组标签
bins = [group_labels.min() - pd.Timedelta(minutes=5)] + sorted(group_labels)
df['group'] = pd.cut(df.index, bins=bins, labels=sorted(group_labels), right=True)
# 分组计算OHLC并调整顺序
ohlc_result = df.groupby('group')['random'].ohlc().sort_index(ascending=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:06:28