在一次课程设计中,需要将df数组中“time”字段小于某个阈值的数据筛选出来,日期格式为时分秒,即“%H:%M:%S”。
然后使用
df['time']<'02:00:00'
出现报错,
'<' not supported between instances of 'datetime.time' and 'str'
意思就是说datetime.time与字符串不能比较,这里很明显“02:00:00”是字符串,所以我们需要将字符串转化为时间格式,使用下面的代码
from datetime import datetime #导入datetime
threshold =datetime.strptime('07:00:00','%H:%M:%S')#把字符串转化为时间格式
#这一块不知道的,建议去了解一下strptime与strftime
df['time']<threshold
欸嘿,以为没错了,这下又报错:
'<' not supported between instances of 'datetime.time' and 'datetime.datetime'
好了,这又是什么问题呢,datetime.time与datetime.datetime不能比较,因为这里定义的阈值是datetime.datetime格式,而我们的df['time']是datetime.time。如何解决这个问题呢,将他们的type统一,如果你想将df['time']改为datetime.datetime你会发现显示Series不能转化,会比较麻烦,这里我们将阈值threshold转化为datetime.time格式,这样就不会报错了。
from datetime import datetime #导入datetime
threshold =datetime.time(datetime.strptime('07:00:00','%H:%M:%S'))#把字符串转化为时间格式
#这一块不知道的,建议去了解一下strptime与strftime
df['time']<threshold
如果你遇到的是datetime.date,道理也是相同的。