Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Lajur Rentetan PySpark kepada Format Tarikh?

Bagaimana untuk Menukar Lajur Rentetan PySpark kepada Format Tarikh?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-25 15:17:15744semak imbas

How to Convert PySpark String Columns to Date Format?

Menukar String PySpark kepada Format Tarikh

Anda mempunyai PySpark DataFrame dengan lajur rentetan yang mewakili tarikh dalam format MM-dd-yyyy. Percubaan anda untuk menukar lajur ini kepada format tarikh menggunakan fungsi to_date mengembalikan nol. Artikel ini menyediakan kaedah untuk menangani isu ini.

Pengesyoran Kemas Kini (Spark 2.2 ):

Untuk Spark versi 2.2 dan ke atas, pendekatan pilihan adalah menggunakan to_date atau to_timestamp fungsi, yang kini menyokong hujah format. Ini membolehkan anda menentukan format input dan menukar lajur rentetan terus kepada tarikh atau cap masa:

from pyspark.sql.functions import to_timestamp

df = spark.createDataFrame([('1997-02-28 10:30:00',)], ['t'])
df.select(to_timestamp(df.t, 'yyyy-MM-dd HH:mm:ss').alias('dt')).collect()

# Output:
# [Row(dt=datetime.datetime(1997, 2, 28, 10, 30))]

Jawapan Asal (Spark < 2.2):

Untuk versi Spark yang lebih awal, anda boleh menggunakan kaedah berikut tanpa memerlukan fungsi yang ditentukan pengguna (UDF):

from pyspark.sql.functions import unix_timestamp, from_unixtime

df = spark.createDataFrame(
    [("11/25/1991",), ("11/24/1991",), ("11/30/1991",)], 
    ['date_str']
)

df2 = df.select(
    'date_str', 
    from_unixtime(unix_timestamp('date_str', 'MM/dd/yyy')).alias('date')
)

print(df2)

# Output:
# DataFrame[date_str: string, date: timestamp]

df2.show(truncate=False)

# Output:
# +----------+-------------------+
# |date_str  |date               |
# +----------+-------------------+
# |11/25/1991|1991-11-25 00:00:00|
# |11/24/1991|1991-11-24 00:00:00|
# |11/30/1991|1991-11-30 00:00:00|
# +----------+-------------------+

Dalam kaedah ini, unix_timestamp menukar lajur rentetan kepada cap waktu Unix dan from_unixtime menukar cap waktu Unix kepada lajur tarikh.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Lajur Rentetan PySpark kepada Format Tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn