【发布时间】:2017-05-23 15:12:19
【问题描述】:
我想知道是否有一种简单而简洁的方法可以使用 Pandas(等)从时间序列数据创建滚动窗口表示?
例如,考虑以下 Series 对象:
x = pd.Series(np.linspace(0,10,100))
df_wind = pd.DataFrame(roll_wind_func(x, wind_size=5))
Out:
0 1 2 3 4
0 0.000000 0.324699 0.614213 0.837166 9.694003e-01
1 0.324699 0.614213 0.837166 0.969400 9.965845e-01
2 0.614213 0.837166 0.969400 0.996584 9.157733e-01
3 0.837166 0.969400 0.996584 0.915773 7.357239e-01
4 0.969400 0.996584 0.915773 0.735724 4.759474e-01
5 0.996584 0.915773 0.735724 0.475947 1.645946e-01
6 0.915773 0.735724 0.475947 0.164595 -1.645946e-01
7 0.735724 0.475947 0.164595 -0.164595 -4.759474e-01
8 0.475947 0.164595 -0.164595 -0.475947 -7.357239e-01
9 0.164595 -0.164595 -0.475947 -0.735724 -9.157733e-01
10 -0.164595 -0.475947 -0.735724 -0.915773 -9.965845e-01
11 -0.475947 -0.735724 -0.915773 -0.996584 -9.694003e-01
12 -0.735724 -0.915773 -0.996584 -0.969400 -8.371665e-01
13 -0.915773 -0.996584 -0.969400 -0.837166 -6.142127e-01
14 -0.996584 -0.969400 -0.837166 -0.614213 -3.246995e-01
15 -0.969400 -0.837166 -0.614213 -0.324699 -2.449294e-16
我已经实现(虽然丑陋)roll_wind_func(data=, wind_size=),但我想知道 Pandas 是否提供更简单的解决方案(没有循环)
【问题讨论】:
-
这是一个使用 NumPy strides 的有效方法 - stackoverflow.com/a/40085052/3293881
标签: pandas