python 文本转日期_将文本转换为numpy格式的datetime64

日期格式是个问题,01/01/2015是不明确的,如果它是在ISO 8601中,你可以直接用numpy解析它,在你的例子中,因为你只需要日期,那么拆分和重新排列数据的速度将大大加快:t = np.array([datetime.strptime(d.split(None)[0], "%d/%m/%Y")

for d in t],dtype='datetime64[us]').astype('datetime64[D]')

一些计时,解析后首先重新排列:

^{pr2}$

您的代码:In [37]: %%timeit

from datetime import datetime

t = np.array(['21/02/2014 08:40:00 AM', '11/02/2014 10:50:00 PM',

'07/04/2014 05:50:00 PM', '17/02/2014 10:20:00 PM',

'07/03/2014 06:10:00 AM', '02/03/2014 12:25:00 PM',

'05/02/2014 03:20:00 AM', '31/01/2014 12:30:00 AM',

'28/02/2014 01:25:00 PM']*10000)

t = [datetime.strptime(tt,"%d/%m/%Y %H:%M:%S %p") for tt in t]

t = np.array(t,dtype='datetime64[us]').astype('datetime64[D]')

....:

1 loops, best of 3: 1.56 s per loop

两种方法得出的结果完全不同:In [48]: t = np.array(['21/02/2014 08:40:00 AM', '11/02/2014 10:50:00 PM',

'07/04/2014 05:50:00 PM', '17/02/2014 10:20:00 PM',

'07/03/2014 06:10:00 AM', '02/03/2014 12:25:00 PM',

'05/02/2014 03:20:00 AM', '31/01/2014 12:30:00 AM',

'28/02/2014 01:25:00 PM'] * 10000)

In [49]: t1 = [datetime.strptime(tt,"%d/%m/%Y %H:%M:%S %p") for tt in t]

t1 = np.array(t1,dtype='datetime64[us]').astype('datetime64[D]')

....:

In [50]: t2 = np.array([np.datetime64("{}-{}-{}".format(c[:4], b, a)) for a, b, c in (s.split("/", 2) for s in t)])

In [51]: (t1 == t2).all()

Out[51]: True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值