【发布时间】:2021-01-23 01:37:21
【问题描述】:
我有一个时间序列,其结构如下所示,标识符列和两个值列(浮点数)
只调用 df 的数据帧:
Date Id Value1 Value2
2014-10-01 A 1.1 1.2
2014-10-01 B 1.3 1.4
2014-10-02 A 1.5 1.6
2014-10-02 B 1.7 1.8
2014-10-03 A 3.2 4.8
2014-10-03 B 8.2 10.1
2014-10-04 A 6.1 7.2
2014-10-04 B 4.3 4.1
我想要做的是将它变成一个数组,该数组由标识符列分组,并具有滚动 3 个观察期,所以我最终会得到这样的结果:
[[[1.1 1.2]
[1.5 1.6] '----> ID A 10/1 to 10/3'
[3.2 4.8]]
[[1.3 1.4]
[1.7 1.8] '----> ID B 10/1 to 10/3'
[8.2 10.1]]
[[1.5 1.6]
[3.2 4.8] '----> ID A 10/2 to 10/4'
[6.1 7.2]]
[[1.7 1.8]
[8.2 10.1] '----> ID B 10/2 to 10/4'
[4.3 4.1]]]
当然,请忽略数组中上述引号中的部分,但希望您能明白这一点。 我有一个更大的数据集,它有更多的标识符,可能需要更改观察计数,所以不能硬计算行数。到目前为止,我倾向于的方向是获取 ID 列的唯一值,并通过创建一个临时 df 并对其进行迭代,一次迭代并获取 3 个值。 似乎有更好更快的方法来做到这一点。
“伪代码”
unique_ids = df.ID.unique().tolist()
for id in unique_ids:
temp_df = df.loc[df['Id']==id]]
虽然我坚持的部分是迭代 temp_df 的最佳方法。
最终输出将用于 LSTM 模型;但是,大多数其他解决方案都不需要像处理“Id”列那样处理 groupby 方面。
【问题讨论】:
标签: python arrays pandas time-series lstm