当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark to_datetime用法及代码示例


本文简要介绍 pyspark.pandas.to_datetime 的用法。

用法:

pyspark.pandas.to_datetime(arg, errors: str = 'raise', format: Optional[str] = None, unit: Optional[str] = None, infer_datetime_format: bool = False, origin: str = 'unix')

将参数转换为日期时间。

参数

arg整数、浮点数、字符串、日期时间、列表、元组、一维数组、系列

或数据帧/dict-like

errors{‘ignore’, ‘raise’, ‘coerce’},默认 ‘raise’
  • 如果‘raise’,那么无效解析会引发异常

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

  • 如果‘ignore’,则无效解析将返回输入

format字符串,默认无

strftime 来解析时间,例如“%d/%m/%Y”,注意“%f” 将一直解析到纳秒。

unit字符串,默认无

arg 的单位 (D,s,ms,us,ns) 表示单位,它是整数或浮点数。这将基于原点。例如,使用 unit='ms' 和 origin='unix'(默认值),这将计算到 unix 纪元开始的毫秒数。

infer_datetime_format布尔值,默认为 False

如果 True 并且没有给出 format,则尝试推断日期时间字符串的格式,如果可以推断,则切换到更快的解析它们的方法。在某些情况下,这可以将解析速度提高约 5-10 倍。

origin标量,默认 ‘unix’

定义参考日期。自此参考日期以来,数值将被解析为单位数(由 unit 定义)。

  • 如果‘unix’(或POSIX)时间;原点设置为 1970-01-01。

  • 如果‘julian’,单位必须为“D”,原点设置为儒略历的开始。儒略日编号 0 分配给从 4713 年 1 月 1 日中午开始的那一天 BC。

  • 如果 Timestamp 可转换,则 origin 设置为由 origin 标识的 Timestamp。

返回

ret解析成功时的日期时间。

返回类型取决于输入:

  • list-like:DatetimeIndex

  • 系列:datetime64 dtype 系列

  • 标量:时间戳

如果无法返回指定类型(例如,当输入的任何元素在 Timestamp.min 之前或 Timestamp.max 之后),返回将具有 datetime.datetime 类型(或相应的数组/系列)。

例子

从 DataFrame 的多列组装日期时间。键可以是常见的缩写,如 [‘year’, ‘month’, ‘day’, ‘minute’, ‘second’, ‘ms’, ‘us’, ‘ns’]) 或相同的复数

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

如果日期不符合 timestamp limitations ,则传递 errors='ignore' 将返回原始输入,而不是引发任何异常。

传递 errors='coerce' 将强制 NaT 越界日期,除了强制非日期(或不可解析日期)到 NaT。

>>> ps.to_datetime('13000101', format='%Y%m%d', errors='ignore')
datetime.datetime(1300, 1, 1, 0, 0)
>>> ps.to_datetime('13000101', format='%Y%m%d', errors='coerce')
NaT

传递 infer_datetime_format=True 可以 often-times 加速解析,如果它不是 ISO8601 格式,而是常规格式。

>>> s = ps.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
>>> import timeit
>>> timeit.timeit(
...    lambda: repr(ps.to_datetime(s, infer_datetime_format=True)),
...    number = 1)  
0.35832712500000063
>>> timeit.timeit(
...    lambda: repr(ps.to_datetime(s, infer_datetime_format=False)),
...    number = 1)  
0.8895321660000004

使用 unix 纪元时间

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

使用非 Unix 纪元起源

>>> ps.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)

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.to_datetime。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。