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
Scroll To Top