如何让Pandas滚动窗口从数据中间位置开始计算?
Pandas滚动窗口从中间位置启动的实现方法
要让滚动窗口从数据中间位置开始计算,核心是跳过前面不需要的窗口,直接从指定起始点遍历,以下是两种实用方法:
方法一:直接对滚动对象切片
先确定你要启动的起始索引,直接对rolling生成的对象做切片,跳过前面的窗口:window_size = 100 start_idx = 500 # 自定义的中间起始索引 # 从start_idx开始遍历滚动窗口 for data_window in df.rolling(window=window_size)[start_idx:]: # 执行你的耗时计算逻辑 do_computation(data_window)方法二:先截取子DataFrame再生成滚动窗口
如果想基于数据比例确定起始位置(比如从数据一半处开始),先截取对应范围的子DataFrame,再生成滚动窗口,避免处理前面的无效窗口:window_size = 100 total_rows = len(df) start_row = total_rows // 2 # 取数据中间行的索引 # 确保截取的子DataFrame能生成完整窗口,避免索引越界 start_pos = max(start_row - window_size + 1, 0) for data_window in df.iloc[start_pos:].rolling(window=window_size): # 执行你的耗时计算逻辑 do_computation(data_window)
注意:如果只需要处理完整窗口,可以直接从window_size - 1 + 起始偏移量的索引开始切片,这样遍历到的每个窗口都是满足大小要求的完整窗口,不会出现前半段行数不足的不完整窗口。
内容的提问来源于stack exchange,提问作者user85361
相关产品推荐
相关产品推荐

