在许多领域的结构化数据中,时间timestamp是其中一个必不可少的一个重要参数。然后关于时间,有各种不同的表现形式。本文将针对Python如何将各种不同的时间字符串进行解析,做一个总结。
总体来讲,有三种方法。
Python标准库中所包含的datetime库
datetime中有一个strptime的函数,这个可以通过对已知格式进行日 期时间解析,然后每次需要编写格式定义。
from datetime import datetime
str_t = '2011-10-3 10:11:12'
datetime.strptime(str_t, '%Y-%m-%d%H:%M:%S')
datetime格式定义
%Y 4位数的年
%y 2位数的年
%m 2位数的月(01, 12)
%d 2位数的日(01,31)
%H 24小时制的时(00,23)
%I 12小时制的时(01,12)
%M 2位数的分(00,59)
%S 秒(00,61),其中60和61用于闰秒
采用dateutil第三方包中的parser.parse方法
from dateutil.parser import parse
parse('2011-10-3 10:11:12')
parse('Jan 31, 2011 10:44 PM')
parse('6/12/2011', dayfirst=True)
值得注意的是,在国际通用的格式中,日通常会出现在月前面,因此可以把dayfirst参数置为true
采用Pandas内置的to_datetime方法
在Pandas中,对于index或columns来讲,都可以采用日期类型。to_datetime可以解析多种不同的日期表示形式。可以给to_datetime传入一个列表list,也可以是一个numpy的array。整体而言,由于笔者在做数据分析中,经常采用Pandas,因而对于时间数据的处理,用to_datetime进行解析也用得最多。
import pandas as pd
datestrs = ['7/6/2011','20110608', '2011-06-09 11:11:00']
pd.to_datetime(datestrs)