Python只从DateTime列中减去一个时间(HH:MM:SS)

Python只从DateTime列中减去一个时间(HH:MM:SS),python,pandas,datetime,time,Python,Pandas,Datetime,Time,我在一个数据框中有一列日期时间。我想从这些日期时间中减去开始时间。开始时间将与每个日期时间在同一天。这不能通过以下小型可复制示例来实现: import datetime start_day = datetime.time(18, 30, 0) # 18:30:00 is the start time datetime_object = datetime.datetime.now() datetime_object.time() - start_day TypeError: unsupporte

我在一个数据框中有一列日期时间。我想从这些日期时间中减去开始时间。开始时间将与每个日期时间在同一天。这不能通过以下小型可复制示例来实现:

import datetime
start_day = datetime.time(18, 30, 0) # 18:30:00 is the start time
datetime_object = datetime.datetime.now()
datetime_object.time() - start_day

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
为了进行此计算,将日期时间拆分为单独的日期和时间列对我来说并不理想。我的选择是什么

多谢各位

编辑:

示例数据帧和预期输出:

Room In DateTime      Desired Output (minutes)
2015-10-18 19:30:00   60
2015-10-18 21:39:00   99
你能改用timedelta吗

你能改用timedelta吗

同情地使用。请尝试以下代码:

import datetime
start_day = datetime.timedelta(hours=2, minutes=30)
datetime_object = datetime.datetime.now()     # 2019-09-27 18:23:06.684283
datetime_object - start_day                   # 2019-09-27 15:53:06.684283 
同情地使用。请尝试以下代码:

import datetime
start_day = datetime.timedelta(hours=2, minutes=30)
datetime_object = datetime.datetime.now()     # 2019-09-27 18:23:06.684283
datetime_object - start_day                   # 2019-09-27 15:53:06.684283 

前面的答案是正确的。我想澄清一下:

处理日期时,两个datetime对象之间的操作将返回一个timedelta对象,因为它们之间存在时间差,而datetime对象和time delta之间的操作将返回一个datetime对象。要总结,请将以下单词作为类型的对象阅读:

datetime+datetime=timedelta

datetime+timedelta=datetime

一些更具重现性的代码:

datetime对象和timedelta对象之间的操作 两个datetime对象之间的操作
希望这有帮助:

前面的答案是正确的。我想澄清一下:

处理日期时,两个datetime对象之间的操作将返回一个timedelta对象,因为它们之间存在时间差,而datetime对象和time delta之间的操作将返回一个datetime对象。要总结,请将以下单词作为类型的对象阅读:

datetime+datetime=timedelta

datetime+timedelta=datetime

一些更具重现性的代码:

datetime对象和timedelta对象之间的操作 两个datetime对象之间的操作 希望这有助于:

from datetime import datetime, timedelta
today = datetime.today()

print(today)
datetime.datetime(2019, 9, 27, 13, 26, 50, 972445)

print(str(today))
'2019-09-27 13:26:50.972445'

print(type(today))
<class 'datetime.datetime'>

yesterday = today - timedelta(days=1)
print(yesterday)
datetime.datetime(2019, 9, 26, 13, 26, 50, 972445)

print(str(yesterday))
'2019-09-26 13:26:50.972445'

print(type(yesterday))
<class 'datetime.datetime'>
today - yesterday
datetime.timedelta(days=1)

str(today - yesterday)
'1 day, 0:00:00'

type(today-yesterday)
<class 'datetime.timedelta'