如何将单词日期字符串转换为日期格式

时间:2019-08-04 17:44:06

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

我想将其中具有日期值的字符串列之一转换为pyspark数据帧中的日期格式

df = spark.createDataFrame(["2019 DECEMBER 12","2019 JANUARY 5",
       "2019 MARCH 7"], "string").toDF("src_col")

该列应转换为以下格式:

2019 DECEMBER 12 --> 12-12-2019,
2019 JANUARY 5 --> 05-01-2019,
2019 MARCH 7 --> 07-03-2019

2 个答案:

答案 0 :(得分:2)

您可以使用to_date spark udf将String转换为Date

df = spark.createDataFrame(["2019 DECEMBER 12", "2019 JANUARY 5", "2019 MARCH 7"], "string").toDF("src_col")
df.withColumn('date', F.date_format(F.to_date('src_col', "yyyy MMMMM dd"),'dd-MM-yyyy')).show()

结果

+----------------+----------+
|         src_col|      date|
+----------------+----------+
|2019 DECEMBER 12|12-12-2019|
|  2019 JANUARY 5|05-01-2019|
|    2019 MARCH 7|07-03-2019|
+----------------+----------+

答案 1 :(得分:1)

您可以使用Spark SQL日期格式和转换函数将日期列显式转换为所需格式。

以下是使用Scala使用spark DataFrame的代码:

import sparkSession.implicits._
import org.apache.spark.sql.functions._

val dates = Seq("2019 DECEMBER 12","2019 JANUARY 5").toDF("dateDF")

val formatDates = dates.withColumn("dateDF",date_format(
      to_date(col("dateDF"),"yyyy MMMMM dd"),"dd-MM-yyyy")
)

formatDates.show(false)

希望这会有所帮助:)