我有一个Pandas数据帧df
,它有三列(time
,from
和to
)。我想执行一个函数,它将执行for循环df['time']
。当当前时间等于df['time']
中的时间时,调用另一个函数,如print something。每行只执行一次。在实际数据中,脚本将在云中24小时执行。你知道吗
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])
如果要从满足特定条件的
pandas.DataFrame
中提取行,则需要对DataFrame
进行切片,而不是手动迭代其所有行并自行检查该条件。这种方法的pandas
实现比任何手动尝试都要快。你知道吗一旦您得到了只包含与当前时间(小时和分钟)匹配的行的数据帧,您就可以迭代较小的
DataFrame
并打印它的每一行的结果(因为您知道它只包含那些匹配的行)。你知道吗请参见以下示例:
它产生(对于本例,如果
ct
字符串的小时和分钟与08:35
匹配):相关问题 更多 >
编程相关推荐