首页 > 解决方案 > Pandas 中窗口大小重叠 50% 的滚动窗口

问题描述

我有一个这样的数据框,它是从 CSV 导入的。 数据框

我想创建一个大小为 256 的滑动窗口,重叠率为 50%。例如,window1 应包含索引 0-255 中的数据,window2 应包含索引 128-383 中的数据,依此类推,直到所有数据在各自的窗口中拆分。我正在尝试使用 pandas 的 rolling.windows 来创建窗口,但没有成功。我想实现这样的目标。 重叠窗口 如何使用 Pandas 或 Numpy 中包含的优化方法来做到这一点?

标签: pythonpandasnumpydata-analysis

解决方案


def windows(d, w, t):  
    r = np.arange(len(d))   
    s = r[::t]   
    z = list(zip(s, s + w))   
    f = '{0[0]}:{0[1]}'.format
    g = lambda t: d.iloc[t[0]:t[1]]   
    return pd.concat(map(g, z), keys=map(f, z))   

windows(d,256,128)
d: 数据框 w: 窗口大小(256) t: 重叠因子(例如 50% 的窗口大小,即 128)。
所以在传递上述参数后,函数返回一个新的数据框,窗口大小为 256,重叠 50%。


推荐阅读