【问题标题】:How to check the Date format of a column in Pyspark如何检查 Pyspark 中列的日期格式
【发布时间】:2021-05-30 05:15:00
【问题描述】:

我对 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中做同样的事情?

【问题讨论】:

    标签: regex dataframe apache-spark date pyspark


    【解决方案1】:

    您可以尝试将其转换为日期。如果你得到 null,格式可能是错误的:

    import pyspark.sql.functions as F
    
    df2 = df.withColumn('converted', F.to_date('Date', 'dd/MM/yyyy'))
    

    PS 你的检查方式不是很可靠 - 例如。 01/24/2019 将通过您的测试,但不是 dd/MM/yyyy 格式的有效日期。

    如果你想检查一个正则表达式模式,你可以使用rlike:

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

    如果要提取模式,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      相关资源
      最近更新 更多