的实例之间不支持'>='日期时间。日期时间'和'日期时间.time'

2024-10-05 11:45:14 发布

您现在位置:Python中文网/ 问答频道 /正文

已经有一个标题相同的问题,但我找不到问题的答案。。我正在比较列中的时间(以小时:分钟:秒的格式)与设置的时间(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

同上

欢迎任何帮助,谢谢!在


Tags: 数据编辑标题dfdatetimetime格式时间
1条回答
网友
1楼 · 发布于 2024-10-05 11:45:14

正如注释中所讨论的,您的列Finishtime中有混合类型。 通过应用此函数,可以提取所有值的时间:

df['Finishtime'].apply(lambda x: datetime.time(x.hour, x.minute, x.second))

注意:x.time()适用于datetime.datetime对象,但不适用于datetime.time。由于两者兼而有之,所以上面的解决方法适用于所有类型。在

相关问题 更多 >

    热门问题