我在 Pandas 数据框中有一列 DateTimes。我想从这些日期时间中减去开始时间。开始时间将与每个日期时间在同一天。以下可重现的小示例无法做到这一点:
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'
为了进行此计算,将 dateTimes 拆分为单独的日期和时间列对我来说并不理想。我有哪些选择?
谢谢
编辑:
示例 DataFrame 和预期输出:
Room In DateTime Desired Output (minutes)
2015-10-18 19:30:00 60
2015-10-18 21:39:00 99
最佳答案
前面的答案是正确的。澄清一下:
当处理日期时,两个日期时间对象之间的操作将返回一个时间增量对象(因为它们之间存在时间差),而日期时间对象和时间增量之间的操作将返回一个日期时间对象。总而言之,将以下单词读作类型的对象:
日期时间 + 日期时间 = 时间增量
日期时间 + 时间增量 = 日期时间
一些更可重现的代码:
datetime对象和timedelta对象之间的操作
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'
希望这有帮助:)
关于Python 仅减去一次 (HH :MM:SS) from a DateTime Column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58137975/