我有一个这样的数据框:
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'
您有什么好办法解决这个问题吗?我是否必须将datetime转换为string或int?(仍然很难比较)
谢谢!
最佳答案
使用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
关于python - 在“datetime.time”和“datetime.datetime”的实例之间不支持“>”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53164730/