Как выполнить логические тесты на значениях времени в кадре данных pandas - PullRequest
0 голосов
/ 15 мая 2018

У меня есть лист Excel, в котором один столбец содержит поле времени, где значения - это время дня, введенное в виде четырех цифр: то есть 0845, 1630, 1000.

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

# Get start time as time

df['START_TIME'] =  pd.to_datetime(df['START_TIME'],format='%H%M').dt.time

Что дает значения, похожие на:

08:45:00
16:30:00
10:00:00

Новый тип dtype - это объект.

Когда я пытаюсь выполнить логическое тестирование в этом поле, то есть

# Create indicator of whether course begins before or after 4:00 PM

df['DAY COURSE INDICATOR'] = df['START_TIME'] < '16:00:00'

Я получаю ошибку типа:

TypeError: '<' не поддерживается между экземплярами> 'datetime.time' и 'str'

или синтаксическая ошибка, если я удалю кавычки.

Как лучше всего создать этот индикатор; как мне работать с автономными значениями времени? Или мне лучше оставить их как целые числа.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете сделать именно то, что вы сделали в первую очередь:

pd.to_datetime(df['START_TIME'], format='%H:%M:%S') < pd.to_datetime('16:00:00', format='%H:%M:%S')

Пример:

df = pd.DataFrame({'START_TIME': ['08:45']})
>>> pd.to_datetime(df['START_TIME'], format='%H:%M:%S') < pd.to_datetime('16:00:00', format='%H:%M:%S')
0    True
Name: START_TIME, dtype: bool
0 голосов
/ 15 мая 2018

Нельзя сравнивать datetime.time и str, но вы, безусловно, можете сравнить datetime.time и datetime.time:

import datetime
df['DAY COURSE INDICATOR'] = df['START_TIME'] < datetime.time(16, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...