以下是我的数据集的示例:
index time value
0 00:00:01 12
1 00:00:06 18
2 00:00:11 28
3 00:00:15 32
4 00:00:20 51
我想创建一个执行以下功能的for循环:
for t in range (00:00:01, 23:59:59, 5s):
if df.Value[t]> df.Value[t+10]:
print ('True')
else:
print('False')
for循环将从时间= 00:00:01(一天开始的1秒)开始到时间= 23:59:59(一天结束),每次增加5秒。因此,循环将在特定时间(t)取值并将其与时间= t + 10秒时的值进行比较。如果它更大,它将打印True;否则为False。
P.S .:棘手的部分是两点之间的时间差并不总是5秒;因此,我想编写一个函数,使程序可以获取最接近的时间值。
例如:
在第四次迭代中(在索引3处),循环将花费t = 00:00:16。但是,该时间在数据集中不可用。因此,我想调用一个函数,该函数将提示程序采取最接近00:00:16的时间,即00:00:15。
请注意,上面的for循环是理论上的,仅用于说明所需的内容。另外,数据集存储在Excel工作表中。
我将不胜感激。谢谢。
答案 0 :(得分:0)
如果您计划多次运行此功能,则创建一个优化版本相对便宜-一个简单的二进制搜索(在排序日期上)仍然可能明显优于线性搜索,即使这些日期很奇怪差距。
from list of integers, get number closest to a given value
如果您真的需要提高效率,可以在日期上构建其他树以进行更有效的搜索