'>' не поддерживается между экземплярами datetime.time и datetime.datetime - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть такой фрейм данных:

        datetime          duration
0   2018-10-08 13:30:00    03:00
1   2018-10-08 16:40:00    00:11
2   2018-10-08 21:30:00    03:19
3   2018-10-09 03:21:00    04:27
4   2018-10-09 07:49:00    02:11

Я пытаюсь извлечь строки в дневное или ночное время следующим образом:

import datetime as dt

mask = (df_sleep['datetime'].dt.time > dt.datetime.strptime('08:00:00', '%H:%M:%S')) & (df_sleep['datetime'].dt.time < dt.datetime.strptime('21:00:00', '%H:%M:%S'))
df_sleep.loc[mask]

Но ошибка отображается как:

TypeError: '>' not supported between instances of 'datetime.time' and 'datetime.datetime'

У вас есть идея, как решить эту проблему? Должен ли я преобразовывать дату и время в строку или int? (С которыми все еще будет трудно сравнивать)

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

Использование between_time

df.set_index('datetime').between_time('08:00','21:00').reset_index()
Out[351]: 
             datetime duration
0 2018-10-08 13:30:00    03:00
1 2018-10-08 16:40:00    00:11

Использование dt.hour с вашей идеей маски

mask=(df['datetime'].dt.hour>8)&(df['datetime'].dt.hour<21)
mask
Out[357]: 
0     True
1     True
2    False
3    False
4    False
Name: datetime, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...