我有一个熊猫据帧df
,其中有三列(time
,from
和to
)。我想执行一个函数,它将循环使用df['time']
。当前时间等于df['time']
中的时间时,请调用另一个函数,如打印某物。每行只会执行一次。在真实数据中,该脚本将在云中执行24小时。Python的循环一整天,当当前时间等于给定的时间,做一些
import pandas as pd
df=pd.DataFrame({'time':['08:35','09:35','09:45','10:10'],
'from':['SHH','SZH','WXH','ZJH'],
'to':['NJH','NJH','NJH','NJH']})
df
from time to
0 SHH 08:35 NJH
1 SZH 09:35 NJH
2 WXH 09:45 NJH
3 ZJH 10:10 NJH
例如,当当前时间是08:35
,打印Time is reached, train from SHH to NJH
,并当当前时间是09:35
,打印Time is reached, train from SZH to NJH
。我不知道如何修改下面的代码来满足我的 工作。需要帮忙。
import datetime
import time
def ex(a,b):
print("Time is reached. train from {} to {}".format(a, b))
time_ls = list(df['time'])
from_ls = list(df['from'])
to_ls = list(df['to'])
def run():
for i in range(len(df['time'])):
while time.strftime("%H:%M", time.localtime()) == df['time'][i]:
time_ls.remove(df['time'][i])
yield ex(from_ls[i],to_ls[i])
你可能想看看[箭头] (https://github.com/crsmithdev/arrow)这个库使与日期时间的交互更容易和更具可读性。 – matyas
如果每秒钟/每分钟处理整个数据帧变得过重,那么您可能还会考虑根据您知道的时间设置调度程序。有关基础库中的内容,请参见[sched](https://docs.python.org/2/library/sched.html#sched.scheduler.enterabs)。 –