计算两个时间戳列的差异[重复]

Posted

技术标签:

【中文标题】计算两个时间戳列的差异[重复]【英文标题】:calculate the difference of two timestamp columns [duplicate] 【发布时间】:2021-05-04 02:57:57 【问题描述】:

我有一个这样的数据集:

data = pd.DataFrame('order_date-time':['2017-09-13 08:59:02', '2017-06-28 11:52:20', '2018-05-18 10:25:53', '2017-08-01 18:38:42', '2017-08-10 21:48:40','2017-07-27 15:11:51',
                                   '2018-03-18 21:00:44','2017-08-05 16:59:05', '2017-08-05 16:59:05','2017-06-05 12:22:19'],
                'delivery_date_time':['2017-09-20 23:43:48', '2017-07-13 20:39:29','2018-06-04 18:34:26','2017-08-09 21:26:33','2017-08-24 20:04:21','2017-08-31 20:19:52',
                                      '2018-03-28 21:57:44','2017-08-14 18:13:03','2017-08-14 18:13:03','2017-06-26 13:52:03'])

我想将这些日期之间的时间差计算为天数,并将其作为交货延迟列添加到表中。但我需要包括这个计算的日期和时间 例如,如果差值是 7 天 14:44:46,我们可以将其四舍五入为 7 天。

【问题讨论】:

【参考方案1】:
from datetime import datetime

datetime.strptime(date_string, format)

你可以用它把字符串转换成DateTime格式,放入变量中,然后计算

访问https://www.journaldev.com/23365/python-string-to-datetime-strptime/

【讨论】:

其实,我试过这个代码 datetime.strptime('order_date-time', '%Y-%m-%d %H:%M:%S') 但我得到了错误时间数据'order_date-time' 与格式 '%Y-%m-%d %H:%M:%S' 不匹配【参考方案2】:

Python 的datetime 库非常适合处理单独的时间戳。但是,如果您的数据在 pandas DataFrame 中,那么您应该使用 pandas 日期时间功能。

要将带有时间戳的列从字符串转换为正确的日期时间格式,您可以使用pandas.to_datetime()

data['order_date_time'] = pd.to_datetime(data['order_date_time'], format="%Y-%m-%d %H:%M:%S")
data['delivery_date_time'] = pd.to_datetime(data['delivery_date_time'], format="%Y-%m-%d %H:%M:%S")

format 参数是可选的,但我认为始终使用它来确保您的日期时间格式不会被错误地“解释”是个好主意。它还使处理大型数据集的过程更快。

一旦有了日期时间格式的列,您就可以简单地计算它们之间的timedelta

data['delay'] = data['delivery_date_time'] - data['order_date_time']

最后,如果你想对这个 timedelta 进行四舍五入,那么pandas 再次有正确的方法:

data['approx_delay'] = data['delay'].dt.round('d')

额外的dt 提供对datetime 特定方法的访问权限,round 函数将frequency 作为参数,在这种情况下,频率已使用'd' 设置为一天

【讨论】:

以上是关于计算两个时间戳列的差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery:如何将 2 个时间戳列合并为 1 个列?

spark scala比较具有时间戳列的数据帧

使用熊猫读取带有时间戳列的 csv

Postgres 时间戳列的默认值设置未正确使用

如何创建包含时间戳列的表视图?

基于组 ID 子集的时间戳列的组中的最后一行 - Postgres