我有一个与此相关的数据框:
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”的新列,该列显示了时间差异。最后,如果开始日期和结束日期不同,例如午夜前后,那么我希望代码可以无缝处理。
答案 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)
字符串减法效果不佳, 但是减去时间戳会给您时间增量。