【发布时间】:2019-06-23 06:49:56
【问题描述】:
This outstanding post 非常清楚地说明了如何使用 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]]
这可以用滚动对象来完成吗?
【问题讨论】:
标签: python pandas dataframe cumsum rolling-computation