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

如何基于pandas DataFrame生成时间序列预测用的滚动窗口数据集

时间序列滚动窗口转换方案

下面提供两种无遍历的高效实现方式,均可以满足你的需求:

方法1:NumPy滑动窗口视图(推荐,大内存数据最优)

该方法基于NumPy的内存视图实现,不会产生额外的数据拷贝,性能远高于循环遍历,适合处理大规模时间序列数据。

import numpy as np
import pandas as pd
from numpy.lib.stride_tricks import sliding_window_view

# 读取数据后可根据需要先按时间正序排序
# df = df.sort_values("Date").reset_index(drop=True)
value_arr = df["Failures"].values

# 窗口长度为4,加1位目标值,总窗口长度为5
window_total_len = 5
windows = sliding_window_view(value_arr, window_shape=window_total_len)

输出的windows是二维数组,每一行的格式为[特征1, 特征2, 特征3, 特征4, 目标值],完全符合你给出的示例格式。

方法2:Pandas Rolling实现(小数据量写法更简洁)

如果你更习惯用pandas接口,小数据量场景下可以直接用rolling方法实现,你之前使用rolling未成功是因为没有提取完整窗口的数值:

window_len = 4
# 滑动窗口长度设为4+1,每个窗口返回完整的特征+目标序列
window_series = df["Failures"].rolling(window_len + 1).apply(lambda x: x).dropna()
# 转成numpy数组格式:window_arr = np.stack(window_series.values)

可选:转成结构化DataFrame

如果需要保留表格格式,可以给生成的窗口设置列名:

cols = [f"lag_{i}" for i in range(4, 0, -1)] + ["target"]
window_df = pd.DataFrame(windows, columns=cols)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:48:03