我想将其中具有日期值的字符串列之一转换为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
答案 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)
希望这会有所帮助:)