Python '&燃气轮机';在';datetime.time';和';datetime.datetime';

Python '&燃气轮机';在';datetime.time';和';datetime.datetime';,python,pandas,datetime,Python,Pandas,Datetime,我有这样一个数据帧: 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

我有这样一个数据帧:

        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]
你知道如何解决这个问题吗?我是否必须将日期时间转换为字符串或int?(这仍然很难比较)


谢谢

在时间间隔使用

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

mask=(df['datetime'].dt.hour>8)和(df['datetime'].dt.hourHi@W-B非常感谢!两种方法对我都有效。天才!
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