计算两个时间戳列的差异[重复]
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'
设置为一天
【讨论】:
以上是关于计算两个时间戳列的差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章