我正在建立一个电报机器人,给出一个地理位置将返回下一班巴士从最近的站点出发的时间。现在,我遇到时间格式问题,我不知道如何有效地找到最近的时间值。
在pandas中我加载了以下文件(我删除了一些不相关的信息):
trip_id arrival_time departure_time ...
4444 0...07 24:00:00 24:00:00 79
11735 0...07 24:00:00 24:00:00 65
24122 0...07 24:00:00 24:00:00 192
45251 0...07 24:00:00 24:00:00 236
python的datetime库只处理0..23
格式的时间,pandas .to_datetime()
函数也是如此。现在列被加载为字符串。
我当然可以进行正则表达式替换并以00:
格式转换时间但是如果有正确的方法可以徘徊,因为我可能想在其他文件中执行相同的操作。
然后,给定正确的格式和请求的时间,是否有办法只获得给定时间后的行。
即。鉴于07:35,如何从(07:36 ......)07:35开始只获得行?
答案 0 :(得分:1)
切片:为了按照您提出的方式选择切片,您可以使用遮罩:
mask = df['arrival_time'] > '07:35:00'
# then work on df[mask]
或者,如果将时间设置为索引,则可以使用常规的Python类型切片:
df.set_index('arrival_time', inplace=True)
df['07:35:00':]
时间转换:为了将字符串转换为时间,您可以在此处使用答案:https://stackoverflow.com/a/3493966/5276797
如果您确实将字符串转换为时间,则切片必须稍微改变一下。类似下面的代码:
from datetime import datetime
mask = df['arrival_time'] > datetime(2016, 2, 15, 7, 35) # now you need a date