如何用循环处理含Timestamp的列表l,提取连续1的时间区间?
提取连续1值分组的时间范围
给定数据列表l:
[[Timestamp('2022-07-14 00:01:00'), Timestamp('2022-07-14 00:11:00'), 1], [Timestamp('2022-07-14 00:08:00'), Timestamp('2022-07-14 00:18:00'), 1], [Timestamp('2022-07-14 00:15:00'), Timestamp('2022-07-14 00:25:00'), 1], [Timestamp('2022-07-14 00:22:00'), Timestamp('2022-07-14 00:32:00'), 0], [Timestamp('2022-07-14 00:29:00'), Timestamp('2022-07-14 00:39:00'), 0], [Timestamp('2022-07-14 00:36:00'), Timestamp('2022-07-14 00:46:00'), 1], [Timestamp('2022-07-14 00:43:00'), Timestamp('2022-07-14 00:53:00'), 1], [Timestamp('2022-07-14 00:50:00'), Timestamp('2022-07-14 01:00:00'), 1], [Timestamp('2022-07-14 00:57:00'), Timestamp('2022-07-14 01:07:00'), 0], [Timestamp('2022-07-14 01:04:00'), Timestamp('2022-07-14 01:14:00'), 1], [Timestamp('2022-07-14 01:11:00'), Timestamp('2022-07-14 01:21:00'), 1], [Timestamp('2022-07-14 01:18:00'), Timestamp('2022-07-14 01:28:00'), 1], [Timestamp('2022-07-14 01:25:00'), Timestamp('2022-07-14 01:35:00'), 0], [Timestamp('2022-07-14 01:32:00'), Timestamp('2022-07-14 01:42:00'), 0]]
需求:编写循环处理该数据,提取所有**连续出现l[i][2] == 1**的分组,每个分组需输出:
- 分组第一个元素的第一个Timestamp
- 分组最后一个元素的第二个Timestamp
解决方案代码
# 初始化变量 result = [] current_group_start = None for idx, item in enumerate(l): # 当前元素标记为1的情况 if item[2] == 1: # 无活跃分组时,记录起始时间 if current_group_start is None: current_group_start = item[0] # 到达列表末尾或下一个元素标记为0时,结束当前分组 if idx == len(l)-1 or l[idx+1][2] != 1: result.append((current_group_start, item[1])) current_group_start = None # 输出结果 for start, end in result: print(f"{start}, {end}")
运行结果
Timestamp('2022-07-14 00:01:00'), Timestamp('2022-07-14 00:25:00') Timestamp('2022-07-14 00:36:00'), Timestamp('2022-07-14 01:00:00') Timestamp('2022-07-14 01:04:00'), Timestamp('2022-07-14 01:28:00')
内容的提问来源于stack exchange,提问作者bugrahaskan
相关产品推荐
相关产品推荐

