获取最近的时间值并转换格式

时间:2016-02-15 14:56:39

标签: python pandas

我正在建立一个电报机器人,给出一个地理位置将返回下一班巴士从最近的站点出发的时间。现在,我遇到时间格式问题,我不知道如何有效地找到最近的时间值。

在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开始只获得行?

1 个答案:

答案 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