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

如何基于DataFrame历史数据新增列计算过去5分钟最低价格

实现方法

你可以用pandas的时间滚动窗口功能实现需求,步骤如下:

  • 转换DateTime列为pandas时间格式,按时间升序排序后设为索引
  • 调用rolling方法指定5分钟时间窗口,计算窗口内Price最小值
  • 将计算结果赋值给新列lowest price即可

完整代码示例

import pandas as pd

# 示例数据构造,实际使用时替换为读取你的数据即可,比如df = pd.read_csv("你的文件路径")
df = pd.DataFrame({
    'DateTime': [
        '23/11/2021 23:59', '23/11/2021 23:58', '23/11/2021 23:57',
        '23/11/2021 23:56', '23/11/2021 23:55', '23/11/2021 23:54',
        '23/11/2021 23:53', '23/11/2021 23:52', '23/11/2021 23:51'
    ],
    'Price': [57540.60, 57560.96, 57581.44, 57617.08, 57710.88, 57654.52, 57635.68, 57644.85, 57626.73]
})

# 转换时间格式,按时间排序后设为索引
df['DateTime'] = pd.to_datetime(df['DateTime'], format='%d/%m/%Y %H:%M')
df = df.sort_values('DateTime', ascending=True).set_index('DateTime')

# 计算过去5分钟(含当前时间点)的最低价格
df['lowest price'] = df['Price'].rolling(window='5T', closed='both').min()

# 可选:将DateTime从索引恢复为普通列
df = df.reset_index()
说明
  • window='5T'是pandas内置的时间偏移写法,代表5分钟的时间窗口,和固定取前N行的窗口不同,该写法会严格按时间区间计算,即使中间有缺失的时间点也不会出错
  • closed='both'代表窗口包含左右边界,也就是会把当前时间点和刚好5分钟整的时间点的价格纳入计算,如果你不需要包含当前时间点的价格,可以调整为closed='left'
  • 请根据你实际的DateTime字符串格式调整pd.to_datetime中的format参数,避免时间转换出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:06:05