首頁 >後端開發 >Python教學 >如何有效地將 Pyspark 字串列轉換為日期列?

如何有效地將 Pyspark 字串列轉換為日期列?

DDD
DDD原創
2024-11-30 11:55:11691瀏覽

How to Efficiently Convert a Pyspark String Column to a Date Column?

將 Pyspark 字串列轉換為日期格式

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn