我有一個帶有日期列的資料框架,其中有不同型別的日期格式存在。我想只驗證和提取日期格式為 預期輸出: uj5u.com熱心網友回復: 我發現一個簡單的方法,不是使用 uj5u.com熱心網友回復: 你可以指定格式為 uj5u.com熱心網友回復: 使用rlike和to_date
標籤: 上一篇:獲取帶有時區的星期范圍
下一篇:如何獲得一個月中任何一天的日期?
'MM-dd-yy'的記錄,但當我驗證和提取時,我也得到了格式為''MM-dd-yy'的記錄。提取格式為''MM-dd-yy'的記錄的正確格式是什么?
from pyspark.sql import functions as F,Window
df = sc.parallelize([['12-21-20']。
['05-30-2020'],
['01-01-1984'],
['12-24-20']]).toDF(["Date"])
df.show()
----------
| ?日期|
----------
| 12-21-20|
|05-30-2020|
|01-01-1984|
|12-24-20|
----------
spark.sql("set spark.sql.legacy.timeParserPolicy=LEGACY"/span>)
df=df.filter(~F.col("Date"/span>).isNotNull()|
to_date(F.col("Date"),'MM-dd-yy') .isNotNull())
顯示(df)
----------
| 串列中的日期
----------
| 12-21-20|
|05-30-2020|
|01-01-1984|
|12-24-20|
----------
----------
|日期|
----------
| 12-21-20|
| 12-24-20|。
----------
to_date,而是使用regexp_extractdf = df.filter((F. regexp_extract('Date', '(d{2}-d{2}-d{2})$', 1) !=' ') &
(F.to_date('Date', 'MM-dd-yy').isNotNull())
df.show()
--------
| ???
--------
|12-21-20|
|12-24-20|
--------
MM-dd-yyyy,它將在年份上附加00兩個數字,你可以根據這個進行過濾。
df.where(to_date(F。 col("Date"),'MM-dd-yyy').rlike('^00[1-9] ') &。
to_date(F.col("Date"),'MM-dd-yyyy').isNotNull())。
--------
| 串列中的日期
--------
|12-21-20|
|12-24-20|
--------
>>> df。 filter((f.col("Date").rlike('^d{2}-d{2}-d{2}'$)
& (f.to_date(f.col("Date"), "MM-dd-yy")).isNotNull()) 。
--------
| 串列中的日期
--------
|12-21-20|
|12-24-20|
--------
