2016-02-15 5 views
0

Я создаю бомбу телеграммы, который дал географическое положение, вернет время, когда ближайшие автобусы уйдут с ближайшей остановки. Теперь у меня проблема с форматом времени, и я не знаю, как эффективно найти ближайшее значение времени.Получить ближайшее значение времени и преобразовать формат

В панд я загрузил следующий файл (я удалил некоторую ненужную информацию): библиотека DateTime

      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 

питона только обрабатывает время в формате 0..23 и так делает панда .to_datetime() функцию. Теперь столбцы загружаются как строки.

Я мог бы, конечно, сделать замену регулярных выражений и преобразовать время в формате 00:, но я блуждал, если есть правильный способ сделать это, так как я могу захотеть сделать ту же операцию в других файлах.

Затем, учитывая правильный формат и время запроса, существует способ получить только строки, следующие за заданным временем.

i.e. данный 07:35, как получить только строки, начиная с 07:35 (07:36 ...)?

+2

Какую строку вы хотите преобразовать во времени? ''24: 00: 00''? Это будет полночь? Можете ли вы привести другие примеры? – IanS

+0

Да, у меня есть целая куча '24: 01: 00 ',' 24:02:00 ',' 24:07:00 'и так далее. – Angelo

ответ

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 
Смежные вопросы