當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。