maxframe.dataframe.to_datetime#

maxframe.dataframe.to_datetime(arg, errors: str = 'raise', dayfirst: bool = False, yearfirst: bool = False, utc: bool = None, format: str = None, exact: bool = True, unit: str = None, infer_datetime_format: bool = False, origin: Any = 'unix', cache: bool = True)[源代码]#

将参数转换为 datetime。

参数:
  • arg (int, float, str, datetime, list, tuple, 1-d array, Series DataFrame/dict-like) -- 要转换为 datetime 的对象。

  • errors ({'ignore', 'raise', 'coerce'}, default 'raise') --

    • 如果为 'raise',则无效解析将引发异常。

    • 如果为 'coerce',则无效解析将被设置为 NaT。

  • dayfirst (bool, default False) -- 如果 arg 是字符串或其类似列表的形式,指定日期解析顺序。如果为 True,则优先以日优先解析日期,例如 10/11/12 将被解析为 2012-11-10。警告:dayfirst=True 并非严格模式,但会优先以日优先解析(这是基于 dateutil 行为的一个已知 bug)。

  • yearfirst (bool, default False) -- 如果 arg 是字符串或其类似列表的形式,指定日期解析顺序。 - 如果为 True,则优先以年优先解析日期,例如 10/11/12 将被解析为 2010-11-12。 - 如果 dayfirst 和 yearfirst 都为 True,则优先使用 yearfirst(与 dateutil 行为一致)。警告:yearfirst=True 并非严格模式,但会优先以年优先解析(这是基于 dateutil 行为的一个已知 bug)。

  • utc (bool, default None) -- 如果为 True,则返回 UTC DatetimeIndex(同时转换任何包含时区信息的 datetime.datetime 对象)。

  • format (str, default None) -- 用于解析时间的 strftime,例如 "%d/%m/%Y",注意 "%f" 可以解析到纳秒。有关选项的更多信息,请参阅 strftime 文档:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

  • exact (bool, True by default) -- 行为如下: - 如果为 True,则要求格式完全匹配。 - 如果为 False,则允许格式匹配目标字符串中的任意位置。

  • unit (str, default 'ns') -- 参数的单位(D、s、ms、us、ns)表示单位,可以是整数或浮点数。这是基于 origin 的。例如,使用 unit='ms' 和 origin='unix'(默认值)时,将计算自 Unix 纪元开始的毫秒数。

  • infer_datetime_format (bool, default False) -- 如果为 True 且未给定 format,尝试推断 datetime 字符串的格式,如果可以推断,则切换到更快的解析方法。在某些情况下,这可以将解析速度提高 ~5-10 倍。 .. note:: 仅为了兼容性问题而保留。

  • origin (scalar, default 'unix') -- 定义参考日期。数值将被解析为自该参考日期以来的单位数(由 unit 定义)。 - 如果是 'unix'(或 POSIX)时间,origin 设置为 1970-01-01。 - 如果是 'julian',则 unit 必须为 'D',origin 设置为儒略历的起始日。儒略日编号 0 对应公元前 4713 年 1 月 1 日中午开始的那一天。 - 如果是可转换为 Timestamp 的值,origin 设置为由 origin 指定的 Timestamp。

  • cache (bool, default True) -- 如果为 True,则使用唯一转换日期的缓存来应用 datetime 转换。在解析重复日期字符串时,尤其是在有时区偏移的情况下,可能会显著提高速度。只有在至少有 50 个值时才会使用缓存。如果存在超出范围的值,则会使缓存失效并可能减慢解析速度。

返回:

如果解析成功。返回类型取决于输入: - 类似列表:DatetimeIndex - Series:datetime64 数据类型的 Series - 标量:Timestamp 在无法返回指定类型的情况下(例如输入中的任何元素在 Timestamp.min 之前或 Timestamp.max 之后),返回值将为 datetime.datetime 类型(或对应的数组/Series)。

返回类型:

datetime

参见

DataFrame.astype

将参数转换为指定的数据类型。

to_timedelta

将参数转换为时间间隔。

convert_dtypes

转换数据类型。

示例

从 DataFrame 的多个列中组合出一个日期时间。键可以是常见的缩写,如 ['year', 'month', 'day', 'minute', 'second', 'ms', 'us', 'ns'] 或其复数形式。

>>> import maxframe.dataframe as md
>>> df = md.DataFrame({'year': [2015, 2016],
...                    'month': [2, 3],
...                    'day': [4, 5]})
>>> md.to_datetime(df).execute()
0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]

如果某个日期不满足 时间戳限制,传入 errors='ignore' 会返回原始输入而不是抛出异常。

传入 errors='coerce' 会强制将超出范围的日期设为 NaT,同时也会将非日期(或无法解析的日期)设为 NaT。

>>> md.to_datetime('13000101', format='%Y%m%d', errors='coerce').execute()
NaT

如果传入 infer_datetime_format=True,在不是严格 ISO8601 格式但属于常规格式的情况下,通常可以加速解析过程。

>>> s = md.Series(['3/11/2000', '3/12/2000', '3/13/2000'] * 1000)
>>> s.head().execute()
0    3/11/2000
1    3/12/2000
2    3/13/2000
3    3/11/2000
4    3/12/2000
dtype: object

使用 Unix 纪元时间

>>> md.to_datetime(1490195805, unit='s').execute()
Timestamp('2017-03-22 15:16:45')
>>> md.to_datetime(1490195805433502912, unit='ns').execute()
Timestamp('2017-03-22 15:16:45.433502912')

警告

对于浮点数参数,可能会发生精度舍入。为避免意外行为,请使用固定宽度的确切类型。

使用非 Unix 纪元起点

>>> md.to_datetime([1, 2, 3], unit='D',
...                origin=md.Timestamp('1960-01-01')).execute()
DatetimeIndex(['1960-01-02', '1960-01-03', '1960-01-04'], dtype='datetime64[ns]', freq=None)