如何找到两列时间之间的差异?

时间:2019-03-26 18:51:47

标签: python python-3.x dataframe

我有一个与此相关的数据框:

VendorID lpep_pickup_datetime lpep_dropoff_datetime store_and_fwd_flag  \
0         2  2017-03-01 00:30:18   2017-03-01 00:30:47                  N   
1         2  2017-03-01 00:11:58   2017-03-01 01:05:54                  N   
2         2  2017-03-01 00:54:44   2017-03-01 01:03:42                  N   
3         2  2017-03-01 00:00:07   2017-03-01 00:04:39                  N   
4         2  2017-03-01 00:17:05   2017-03-01 00:36:44                  N

我尝试过:

data['trip_duration'] = data['lpep_dropoff_datetime'] - data['lpep_pickup_datetime']
data['trip_duration'] = data['trip_duration']/np.timedelta64(1,'m')

我也尝试过:

data['trip_duration'] = data['lpep_dropoff_datetime'].values - data['lpep_pickup_datetime'].values
data['trip_duration'] = data['trip_duration']/np.timedelta64(1,'m')

在两种情况下,我都会收到此错误:

TypeError: unsupported operand type(s) for -: 'str' and 'str'

我正在尝试创建一个名为“ trip_duration”的新列,该列显示了时间差异。最后,如果开始日期和结束日期不同,例如午夜前后,那么我希望代码可以无缝处理。

1 个答案:

答案 0 :(得分:1)

目前尚不清楚'2017-03-01 00:30:18' ascii时间戳值如何进入您的数据帧。 如果您使用pd.read_csv()填充它,并且没有任何无关的(非日期)值,那么熊猫应该已经为您解析了日期。 您可以使用它进行后处理:

import datetime as dt

def str_to_stamp(s):
    return dt.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')

data['lpep_dropoff_datetime'] = data['lpep_dropoff_datetime'].apply(str_to_stamp)
data['lpep_pickup_datetime'] = data['lpep_pickup_datetime'].apply(str_to_stamp)

字符串减法效果不佳, 但是减去时间戳会给您时间增量。