已经有一个标题相同的问题,但我找不到问题的答案。。我正在比较列中的时间(以小时:分钟:秒的格式)与设置的时间(08:00:00)比较,但有一些问题。在
我已经从excel导入了一些数据到pandas数据框中。有些列包含时间。它们在数据帧中的格式是“object”。 我首先创建了一个新的dataframe,其中只包含列“Starttime”中的时间高于08:00:00的数据,如下所示:
OSR_start_OH = pd.DataFrame()
OSR_start_OH = df[df['Starttime'] >= datetime.time(8,0,0)]
它工作得很好。在
但是我试着用另一个专栏“Finishtime”做同样的事情:
^{pr2}$我得到错误消息'>=' not supported between instances of 'datetime.datetime' and 'datetime.time'
我不明白,因为“Finishtime”列中的数据与“Starttime”中的数据格式相同。事实上它在里面日期时间.time而不是日期时间。日期时间公司名称:
的输出:df['Finishtime'][3]
是:datetime.time(20, 0)
另外,我可以使用“>;=”比较“Finishtime”列中的不同单元格:
的输出:df['Finishtime'][3] >= df['Finishtime'][10]
是:True
编辑:这是一些显示“Finishtime”列上的日期的00:00:00次的数据。在
Startdate Starttime Finishdate Finishtime
350 2018-06-06 12:00:00 2018-06-06 15:00:00
351 2018-06-06 15:00:00 2018-06-06 19:18:17
352 2018-06-05 00:00:00 2018-06-06 14:47:54
353 2018-06-05 22:00:00 2018-06-05 1900-01-01 00:00:00
354 2018-06-05 00:00:00 2018-06-06 15:19:21
355 2018-06-05 22:00:00 2018-06-05 1900-01-01 00:00:00
356 2018-06-06 02:00:00 2018-06-06 14:48:45
357 2018-06-06 21:48:16 2018-06-06 02:00:00
编辑2:这是我尝试后得到的
df['Finishtime'].apply(lambda x: datetime.time(x.hour, x.minute, x.second))
Startdate Starttime Finishdate Finishtime
350 2018-06-06 12:00:00 2018-06-06 15:00:00
351 2018-06-06 15:00:00 2018-06-06 19:18:17
352 2018-06-05 00:00:00 2018-06-06 14:47:54
353 2018-06-05 22:00:00 2018-06-05 1900-01-01 00:00:00
354 2018-06-05 00:00:00 2018-06-06 15:19:21
355 2018-06-05 22:00:00 2018-06-05 1900-01-01 00:00:00
356 2018-06-06 02:00:00 2018-06-06 14:48:45
357 2018-06-06 21:48:16 2018-06-06 02:00:00
同上
欢迎任何帮助,谢谢!在
正如注释中所讨论的,您的列
Finishtime
中有混合类型。 通过应用此函数,可以提取所有值的时间:注意:
x.time()
适用于datetime.datetime
对象,但不适用于datetime.time
。由于两者兼而有之,所以上面的解决方法适用于所有类型。在相关问题 更多 >
编程相关推荐