【问题标题】:How to cast a string column to date having two different types of date formats in Pyspark如何在 Pyspark 中将字符串列转换为具有两种不同类型日期格式的日期
【发布时间】:2023-01-16 05:58:41
【问题描述】:

我有一个字符串类型的数据框列,其中包含日期。我想将该列从字符串转换为日期,但该列包含两种类型的日期格式。

我尝试使用 to_date 函数,但它没有按预期工作,并且在应用函数后给出空值。

下面是我在 df col(datatype - string) 中得到的两种日期格式

我尝试应用 to_date 函数,下面是结果

请告诉我如何解决此问题并仅以一种格式获取日期列

提前致谢

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql databricks


    【解决方案1】:

    您可以使用 pyspark.sql.functions.coalesce 返回列列表中的第一个非空结果。所以这里的技巧是使用多种格式进行解析并采用第一个非空格式:

    from pyspark.sql import functions as F
    
    df = spark.createDataFrame([
        ("9/1/2022",),
        ("2022-11-24",),
    ], ["Alert Release Date"])
    
    
    x = F.col("Alert Release Date")
    
    df.withColumn("date", F.coalesce(F.to_date(x, "M/d/yyyy"), F.to_date(x, "yyyy-MM-dd"))).show()
    
    +------------------+----------+
    |Alert Release Date|      date|
    +------------------+----------+
    |          9/1/2022|2022-09-01|
    |        2022-11-24|2022-11-24|
    +------------------+----------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多