最近发现pd.to_datetime函数可以自动推断日期格式,而且不同格式的日期时间可以同批次处理。如下:
In [5]: df
Out[5]:
0 1
0 2019-1-3 19:00:23 1
1 2019/1/2 19:00:22 2
2 2019-1-1 3
3 2019-2 4
4 2019-1-2 19:00 5
In [8]: df['e']=pd.to_datetime(df[0])
In [9]: df['e']
Out[9]:
0 2019-01-03 19:00:23
1 2019-01-02 19:00:22
2 2019-01-01 00:00:00
3 2019-02-01 00:00:00
4 2019-01-02 19:00:00
Name: e, dtype: datetime64[ns]
后来发现在读取文件的时候即指定解析日期方法与读取之后再解析,两者时间相差一倍。如下所示:
读取时即解析日期
%timeit pd.read_csv(r'D:\桌面快捷方式\滴滴\出租车数据\taxi_shanghai\02\{}.csv'.format(hour),
parse_dates=['数据接收时间','终端GPS时间'],
date_parser=pd.to_datetime).drop(columns='Unnamed: 0').dropna()
# 17s
读取之后再解析
df = pd.read_csv(r'D:\桌面快捷方式\滴滴\出租车数据\taxi_shanghai\02\{}.csv'.format(hour),
).drop(columns='Unnamed: 0').dropna()
df['rectime'] = pd.to_datetime(df['数据接收时间'])
df['gpstime'] = pd.to_datetime(df['终端GPS时间'])
# 8s
推测是因为,读取文件时解析日期是边读边解析,时间是O(n),单独解析时可能采用某种空间换时间的方式把时间复杂度降低了。