python - Pandas 中窗口大小重叠 50% 的滚动窗口
问题描述
我有一个这样的数据框,它是从 CSV 导入的。 数据框
我想创建一个大小为 256 的滑动窗口,重叠率为 50%。例如,window1 应包含索引 0-255 中的数据,window2 应包含索引 128-383 中的数据,依此类推,直到所有数据在各自的窗口中拆分。我正在尝试使用 pandas 的 rolling.windows 来创建窗口,但没有成功。我想实现这样的目标。 重叠窗口 如何使用 Pandas 或 Numpy 中包含的优化方法来做到这一点?
解决方案
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%。