Python 仅减去一次 (HH :MM:SS) from a DateTime Column

标签 python pandas datetime time

我在 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/

相关文章:

python - 将数据框中的 NaN 转换为零

python - Pandas :根据条件向每个组添加行

c# - 我如何着手将时间变成公共(public)整数?

javascript - 从 JavaScript 客户端发送到 .NET 的字符串格式的 UTC 日期正在转换为 DateTime

android - 如何重置日期选择器

python socket.recv 挂起,但是我在 tcpdump 中看到了框架

python - 如何创建一个 UDF 来创建新列并修改现有列

python - 使用 Python(Pandas 和 Numpy)进行线性回归

python - Pandas 数据帧 : Pipe separated values in a cell

python - 带包的 Zipimport