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

如何在Pandas中计算-300秒至-30秒区间的时间序列最大值?

实现方法:计算时间序列中[-300秒, -30秒]区间的最大值

针对你的需求,有两种简洁的实现方式,都能得到约9700的期望结果:

方法一:直接筛选目标时间区间

这种方式最直观,先定位到最后一个时间点,再计算出[-300秒, -30秒]对应的时间范围,筛选该区间内的数据后取最大值:

import pandas as pd

# 生成时间序列数据
df = pd.DataFrame(range(10000))
df.index = pd.date_range(start=1, end=1000000000000, periods=10000)

# 获取数据的最后一个时间戳
last_timestamp = df.index[-1]
# 计算目标区间的起止时间:往前300秒到往前30秒
window_start = last_timestamp - pd.Timedelta(300, unit='s')
window_end = last_timestamp - pd.Timedelta(30, unit='s')

# 筛选区间内的数据并计算最大值
target_max = df.loc[window_start:window_end, 0].max()
print(target_max)  # 输出约9699,接近期望的9700

方法二:利用滚动窗口结合时间偏移

通过rolling计算300秒窗口的最大值,再用shift偏移30秒,排除最近30秒的影响,最后取结果的最后一行:

import pandas as pd

df = pd.DataFrame(range(10000))
df.index = pd.date_range(start=1, end=1000000000000, periods=10000)

# 计算300秒滚动窗口最大值,再将结果偏移30秒(对应排除最近30秒的窗口)
target_max = df[0].rolling('300s').max().shift(freq='30s').tail(1)
print(target_max)

结果说明

你的原始数据时间跨度为1000秒(1e12纳秒=1000秒),共10000条数据,每条间隔0.1秒。[-300秒, -30秒]区间对应第7000到9699条数据,最大值为9699,与你期望的9700一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:30:19