这篇杰出的文章非常清楚地说明了如何使用pandas的cumsum()
DataFrame方法来构建一个包含列的3D张量,该列包含列表的列表,其维度使它们适合用作LSTM的时间序列输入。我想做类似的事情,但是要使用滚动的列表而不是累积聚合的列表。
例如,假设您有一个包含3个时间序列的DataFrame:
A B C
1 2 3
4 5 6
7 8 9
10 11 12
上面我提供的文章展示了如何使用pandas的
cumsum()
函数来构建一个类似下面这样嵌套列表的DataFrame列:[[1, 2, 3]]
[[1, 2, 3], [4, 5, 6]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
以下是实现此目的的关键Python代码行:
input_cols = list(df.columns)
df['single_list'] = df[input_cols].apply(
tuple, axis=1).apply(list)
df['double_encapsulated'] = df.single_list.apply(
lambda x: [list(x)])
但我想要一个列表的滚动窗口,而不是列表的累积和。它应该像这样:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[4, 5, 6], [7, 8, 9], [10, 11, 12]]
[[7, 8, 9], [10, 11, 12], [13, 14, 15]]
这可以用 Rolling 对象完成吗?