pandas.to_datetime¶
-
pandas.
to_datetime
(*args, **kwargs)[source]¶ 将参数转换为datetime。
参数: arg:string,datetime,list,tuple,1-d array,Series
错误:{'ignore','raise','coerce'},默认'raise'
- 如果'raise',那么无效的解析将引发异常
- 如果'coerce',那么无效的解析将被设置为NaT
- 如果'ignore',那么无效的解析将返回输入
dayfirst:boolean,default False
如果arg是str或其列表喜欢,则指定日期解析顺序。如果为True,则首先解析日期,例如10/11/12被解析为2012-11-10。警告:dayfirst = True不是严格的,但是更倾向于首先解析(这是一个已知的错误,基于dateutil行为)。
yearfirst:boolean,default False
如果arg是str或其列表喜欢,则指定日期解析顺序。
- 如果为True,则首先解析日期,例如10/11/12被解析为2010-11-12。
- 如果dayfirst和yearfirst都为True,则前面是yearfirst(与dateutil相同)。
警告:yearfirst = True不是严格的,但是更喜欢用年前解析(这是一个已知的错误,基于dateutil beahavior)。
utc:boolean,默认值无
返回UTC DatetimeIndex if True(转换任何tz感知的datetime.datetime对象)。
框:boolean,默认值为True
- 如果True返回一个DatetimeIndex
- 如果False返回值的ndarray。
格式:string,默认值无
strftime解析时间,例如“%d /%m /%Y”,注意“%f”将解析一直到纳秒。
exact:boolean,默认值为True
- 如果为True,则需要完全匹配格式。
- 如果为False,请允许格式匹配目标字符串中的任何位置。
unit:string,default'ns'
arg(D,s,ms,us,ns)的单位表示历元中的单位(例如,unix时间戳),其是整数/浮点数。
infer_datetime_format:boolean,default False
如果True和没有给出格式,尝试推断datetime字符串的格式,如果可以推断,切换到更快的解析方法。在某些情况下,这可以将解析速度提高〜5-10x。
返回: ret:datetime如果解析成功。
返回类型取决于输入:
- list-like:DatetimeIndex
- 系列:datetime64系列dtype
- 标量:时间戳
如果不可能返回指定的类型(例如,当输入的任何元素在Timestamp.min之前或在Timestamp.max之后)返回将具有datetime.datetime类型(或correspoding array / Series)。
例子
从DataFrame的多个列组装datetime。键可以是常见的缩写,例如['year','month','day','minute','second','ms','us','ns'])
>>> df = pd.DataFrame({'year': [2015, 2016], 'month': [2, 3], 'day': [4, 5]}) >>> pd.to_datetime(df) 0 2015-02-04 1 2016-03-05 dtype: datetime64[ns]
如果日期不符合时间戳限制,则传递errors ='ignore'将返回原始输入,而不是引发任何异常。
传递错误='coerce'将强制超出边界的日期为NaT,以及强制非日期(或不可分析的日期)为NaT。
>>> pd.to_datetime('13000101', format='%Y%m%d', errors='ignore') datetime.datetime(1300, 1, 1, 0, 0) >>> pd.to_datetime('13000101', format='%Y%m%d', errors='coerce') NaT
传递infer_datetime_format = True通常可以加快解析,如果它不是一个ISO8601格式,而是一个正规的格式。
>>> s = pd.Series(['3/11/2000', '3/12/2000', '3/13/2000']*1000)
>>> s.head() 0 3/11/2000 1 3/12/2000 2 3/13/2000 3 3/11/2000 4 3/12/2000 dtype: object
>>> %timeit pd.to_datetime(s,infer_datetime_format=True) 100 loops, best of 3: 10.4 ms per loop
>>> %timeit pd.to_datetime(s,infer_datetime_format=False) 1 loop, best of 3: 471 ms per loop