pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True) [source]
将参数转换为datetime
。
参数: | arg :
0.18.1版中的新功能:或类似 errors : 默认为 如果为 如果为 如果为 dayfirst : 如果 则指定日期解析顺序。 如果为 例如12/10/11解析为2012-11-10。 警告: 但更喜欢使用day first进行解析( 这是一个已知的错误,基于dateutil的行为)。 yearfirst : 如果 如果True解析日期以年份为第一, 则将10/11/12解析为2010-11-12。 如果 则在 警告: 但更喜欢使用 (这是一个已知的错误,基于 版本0.16.1中的新功能。 utc : 如果为 (也转换任何支持tz的datetime.datetime对象)。 box: boolean,默认为True 如果True返回DatetimeIndex或类似Index的对象 如果为False,则返回值的ndarray。 从0.25.0版开始不推荐使用: Series.to_numpy()或Timestamp.to_datetime64() 分别使用或分别获取值或 format :
请注意, 有关选择的更多信息, 请参见 strftime-and-strptime-behavior exact : 如果为 如果为 unit :
它是整数或浮点数。这将基于原点。 例如,对于 这将计算到 infer_datetime_format : 如果为 请尝试推断日期时间字符串的格式, 如果可以推断出日期格式, 请切换到解析它们的更快方法。 在某些情况下,这可以使解析速度提高约5-10倍。 origin : 定义参考日期。自该参考日期以来, 数值将被解析为单位数(由unit定义)。 如果是 原点设置为1970-01-01。 如果为 并且原点设置为Julian Calendar的开头。 Julian天数0被指定为 从公元前4713年1月1日正午开始的那一天。 如果时间戳可转换, 则将原点设置为由原点标识的时间戳。 0.20.0版中的新功能。 cache : 如果为 则使用唯一的转换日期缓存来应用datetime转换。 解析重复的日期字符串时, 尤其是带有时区偏移的日期字符串时, 可能会大大提高速度。 0.23.0版中的新功能。 在0.25.0版中进行了更改: -将默认值从 |
返回值: | ret : 日期时间(如果解析成功)。 返回类型取决于输入: list-like:DatetimeIndex Series:datetime64 dtype Series scalar:时间戳(Timestamp) 如果无法返回指定的类型 (例如,当输入的任何元素 在 ,则返回将具有 (或对应的 |
例子
从DataFrame的多个列中组合一个日期时间。键可以是常见的缩写,例如['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'
将返回原始输入,而不引发任何异常。
如果将error ='coerce'传递给NaT,则除了将非日期(或不可解析的日期)强制为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) # doctest: +SKIP
100 loops, best of 3: 10.4 ms per loop
>>> %timeit pd.to_datetime(s,infer_datetime_format=False) # doctest: +SKIP
1 loop, best of 3: 471 ms per loop
使用Unix纪元时间
>>> pd.to_datetime(1490195805, unit='s')
Timestamp('2017-03-22 15:16:45')
>>> pd.to_datetime(1490195805433502912, unit='ns')
Timestamp('2017-03-22 15:16:45.433502912')
警告: 对于float arg,可能会发生精确舍入。为防止意外行为,请使用固定宽度的精确类型。
使用非unix纪元原点
>>> pd.to_datetime([1, 2, 3], unit='D',
... origin=pd.Timestamp('1960-01-01'))
DatetimeIndex(['1960-01-02', '1960-01-03', '1960-01-04'], dtype='datetime64[ns]', freq=None)