使用 Pyspark 時,可能需要將表示日期的字串列轉換為 DateType 欄位。當資料以字串形式攝取時,通常會遇到這種情況。
為了說明這一點,請考慮以下DataFrame,其中包含名為STRING_COLUMN 的字串列,格式為MM-dd-yyyy:
df = spark.createDataFrame([ ("01-01-2023",), ("01-02-2023",), ("01-03-2023",), ], ["STRING_COLUMN"]) df.show()
要將STRING_COLUMN 轉換為DateType 列,一種方法是使用to_date()函數,如原始版本中所建議的嘗試:
df.select(to_date(df.STRING_COLUMN).alias("new_date")).show()
但是,這種方法可能會導致列填入空白值。要解決此問題,請考慮使用以下方法之一:
1. to_timestamp 函數(Spark 2.2 ):
從Spark 2.2 開始,to_timestamp() 函數提供了一種更有效率、更直接的方法將字串轉換為時間戳。它支援使用格式參數指定輸入格式:
df.select(to_timestamp(df.STRING_COLUMN, "MM-dd-yyyy").alias("new_date")).show()
2. unix_timestamp 和from_unixtime 函數(Spark
對於2.2 之前的Spark 版本,可以使用unix_timestamp 和from_unixtime函數的組合:
from pyspark.sql.functions import unix_timestamp, from_unixtime df.select( from_unixtime(unix_timestamp(df.STRING_COLUMN, "MM-dd-yyyy")).alias("new_date") ).show()
在這兩種情況下,可以使用show()方法來顯示轉換後的DateType專欄。
以上是如何有效地將 Pyspark 字串列轉換為日期列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!