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

Bagaimana untuk Menukar Lajur Rentetan PySpark kepada Format Tarikh?

Mary-Kate Olsen
Lepaskan: 2024-11-25 15:17:15
asal
831 orang telah melayarinya

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))]
Salin selepas log masuk

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|
# +----------+-------------------+
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan