【发布时间】:2020-06-25 03:34:06
【问题描述】:
我有一个包含时间序列值的df。时间戳贯穿到某个点,然后重新开始。因为这个终点可能会有所不同,所以我必须手动找到终点,然后子集所需的输出。
我希望找到一个更自动化的功能来做到这一点。使用下面的df,时间序列从2020-04-13 19:25:34.1 开始,到2020-04-13 19:45:34.1 结束。所以大约20分钟。然后时间序列在 2020-04-13 19:25:34 标记附近重新开始(可能不是精确到 0.1 秒)。
作为参考,我的数据集的时间序列将扩展 30-40 分钟,然后重新开始。但第二个循环的开始可能不一定在同一时间点开始。
df1 = pd.DataFrame({
'Val' : [1,2,3,4,5,6,7,8,1,2],
'Time' : ['2020-04-13 19:25:34.1','2020-04-13 19:25:34.1','2020-04-13 19:35:34.1','2020-04-13 19:35:34.1','2020-04-13 19:45:34.1','2020-04-13 19:45:34.1','2020-04-13 19:25:34.3','2020-04-13 19:25:34.3','2020-04-13 19:35:34.1','2020-04-13 19:35:34.1'],
})
# Return first set of timestamps manually
df1 = df1[:6]
我这样做的主要原因是因为我需要稍后执行 groupby。如果我不删除第二组时间戳,它会完全排序,这是不可取的。
Val_group = df1.groupby(['Time'])['Val'].apply(list)
Time
2020-04-13 19:25:34.1 [1, 2]
2020-04-13 19:25:34.3 [7, 8]
2020-04-13 19:35:34.1 [3, 4, 1, 2]
2020-04-13 19:45:34.1 [5, 6]
这么说,我认为如果我最初过滤第一组时间点会导致更少的问题,因为我必须调整很多后端代码。那么除了手动设置子集,有没有更有效的方法来过滤第一组时间点?
【问题讨论】: