计算两个时间戳列的差值

2024-06-11 11:07:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据集:

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天


Tags: 数据dataframedatadatetime时间order交货
2条回答

Python的datetime库很适合处理单个时间戳。但是,如果您的数据在pandas DataFrame中,就像您的案例一样,那么您应该使用pandas日期时间功能

要将带有时间戳的列从stings转换为正确的datetime格式,可以使用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参数是可选的,但我认为始终使用它来确保datetime格式没有被错误地“解释”是一个好主意。它还使处理大型数据集的过程更快

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

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

最后,如果你想取整这个时间差,那么pandas又有了正确的方法:

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

当额外的dt允许访问特定于datetime的方法时,round函数将frequency作为参数,在这种情况下,使用'd'将频率设置为一天

from datetime import datetime

datetime.strptime(date_string, format)

您可以使用它将字符串转换为DateTime格式,并将其放入变量中,然后进行计算

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

相关问题 更多 >