mars.dataframe.to_datetime#
- mars.dataframe.to_datetime(arg, errors: 字符串 = 'raise', dayfirst: 布尔型 = False, yearfirst: 布尔型 = False, utc: 可选[布尔型] = None, format: 可选[字符串] = None, exact: 布尔型 = True, unit: 可选[字符串] = None, infer_datetime_format: 布尔型 = False, origin: 任何 = 'unix', cache: 布尔型 = True)[来源]#
将参数转换为日期时间。
- Parameters
arg (int, float, str, datetime, list, tuple, 1-d array, Series DataFrame/dict-like) – 要转换为日期时间的对象。
错误 ({'忽略', '引发', '强制转换', 默认 '引发') –
如果是‘引发’,那么无效解析将引发异常。
如果是‘强制转换’,那么无效解析将被设置为 NaT。
如果是‘忽略’,那么无效解析将返回输入值。
dayfirst (bool, 默认值为 False) – 如果 arg 是字符串或其类似列表,指定日期解析顺序。 如果为 True,则按天优先解析日期,例如 10/11/12 被解析为 2012-11-10。 警告:dayfirst=True 不是严格的,但会偏向于按天优先解析 (这是一个已知的错误,基于 dateutil 的行为)。
yearfirst (bool, 默认值为 False) –
如果 arg 是字符串或其列表类型,请指定日期解析顺序。
如果为 True,按年份优先解析日期,例如 10/11/12 被解析为 2010-11-12。
如果 dayfirst 和 yearfirst 都为 True,则 yearfirst 优先(与 dateutil 相同)。
警告:yearfirst=True 不是严格的,但会优先按年份解析 (这是一个已知的bug,基于 dateutil 的行为)。
utc (bool, default None) – 如果为 True,返回 UTC DatetimeIndex(同时转换任何具有时区意识的 datetime.datetime 对象)。
format (str, 默认值为 None) – 用于解析时间的 strftime,例如“%d/%m/%Y”,注意“%f”将解析 直到纳秒。 有关选项的更多信息,请参见 strftime 文档: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior.
exact (bool, 默认为True) – 行为如下: - 如果为True,要求格式完全匹配。 - 如果为False,允许格式在目标字符串中匹配任意位置。
unit (str, default 'ns') – arg的单位(D,s,ms,us,ns)表示单位,这是一个整数或浮点数。这个将基于起始点。 例如,当unit=’ms’且origin=’unix’(默认值)时,这将计算到unix纪元开始的毫秒数。
infer_datetime_format (bool, 默认值为 False) – 如果为 True 且未给定 format,尝试推断日期时间字符串的格式,如果可以推断,则切换到更快的解析方法。在某些情况下,这可以将解析速度提高 ~5-10 倍。
origin (标量, 默认 'unix') –
定义参考日期。数值将被解析为自该参考日期以来的单位数量(由 unit 定义)。
如果是‘unix’(或 POSIX)时间;origin 设置为 1970-01-01。
如果是‘julian’,单位必须为‘D’,并且 origin 设置为朱利安历的开始。朱利安日数 0 被分配给公元前 4713 年 1 月 1 日中午开始的那一天。
如果可转换为时间戳,origin 设置为由 origin 标识的时间戳。
cache (bool, 默认值为True) – 如果为True,则使用一个唯一的、转换后的日期的缓存来应用日期时间转换。当解析重复的日期字符串时,特别是带有时区偏移的字符串时,可能会显著加快速度。缓存仅在至少有50个值时使用。超出范围的值会使缓存不可用,并可能减慢解析速度。
- Returns
如果解析成功。 返回类型取决于输入:
类列表:DatetimeIndex
序列:datetime64类型的序列
标量:时间戳
在无法返回指定类型的情况下(例如,当输入的任何元素在Timestamp.min之前或在Timestamp.max之后)返回将具有datetime.datetime类型(或相应的数组/序列)。
- Return type
日期时间
另请参阅
DataFrame.astype将参数转换为指定的数据类型。
to_timedelta将参数转换为时间增量。
convert_dtypes转换数据类型。
示例
从DataFrame的多个列组装一个日期时间。键可以是 常见的缩写,例如 [‘year’, ‘month’, ‘day’, ‘minute’, ‘second’, ‘ms’, ‘us’, ‘ns’])或者相同的复数形式
>>> import mars.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]
如果日期不符合 timestamp limitations,传递 errors=’ignore’ 将返回原始输入,而不是引发任何异常。
传递 errors=’coerce’ 将强制将越界日期设置为 NaT,除了强制非日期(或不可解析的日期)也设置为 NaT。
>>> md.to_datetime('13000101', format='%Y%m%d', errors='ignore').execute() datetime.datetime(1300, 1, 1, 0, 0) >>> 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)