如何检查pyspark中列的日期格式

huus2vyu  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(309)

我是pyspark的新手,我正面临一个正则表达式的问题。所以,我有一个日期列,我想检查列中的行是否为日期格式 (dd/mm/yyyy) . 我知道如何在普通python中实现它,但不知道pyspark,有人能帮我吗?
我的代码:

df = 
    Date     name
0 12/12/2020  a
1 24/01/2019  b
2 08/09/2018  c
3 12/24/2020  d

print(re.search('\d.*\/.*\d.*\/.*\d', str(df['Date'])))

它给出:

<re.Match object; span=(2, 54), match="12/12/2020', '24/01/2019', '08/09/2018', '12/24/2020>

如何做到同样的事情 pyspark ?

vptzau2j

vptzau2j1#

你可以试着把它转换成日期。如果为null,则格式可能错误:

import pyspark.sql.functions as F

df2 = df.withColumn('converted', F.to_date('Date', 'dd/MM/yyyy'))

ps您的检查方式不太可靠-例如,2019年1月24日将通过您的测试,但不是dd/mm/yyyy格式的有效日期。
如果您想检查regex模式,可以使用 rlike :

df2 = df.withColumn('converted', F.col('Date').rlike('\d.*\/.*\d.*\/.*\d'))

如果你想提取模式,

df2 = df.withColumn('converted', F.regexp_extract('Date', '(\d.*\/.*\d.*\/.*\d)', 1))

相关问题