Apabila bekerja dengan Pyspark, adalah perlu untuk menukar lajur rentetan yang mewakili tarikh kepada lajur DateType. Ini biasanya ditemui apabila data diserap sebagai rentetan.
Untuk menggambarkan ini, pertimbangkan DataFrame berikut dengan lajur rentetan bernama STRING_COLUMN dalam format MM-dd-yyyy:
df = spark.createDataFrame([ ("01-01-2023",), ("01-02-2023",), ("01-03-2023",), ], ["STRING_COLUMN"]) df.show()
Untuk menukar STRING_COLUMN kepada lajur DateType, satu kaedah adalah menggunakan fungsi to_date(), seperti yang dicadangkan dalam asal percubaan:
df.select(to_date(df.STRING_COLUMN).alias("new_date")).show()
Walau bagaimanapun, pendekatan ini mungkin menghasilkan lajur yang diisi dengan nol. Untuk menangani perkara ini, pertimbangkan untuk menggunakan salah satu kaedah berikut:
1. Fungsi to_timestamp (Spark 2.2 ):
Bermula dengan Spark 2.2, fungsi to_timestamp() menyediakan cara yang lebih cekap dan mudah untuk menukar rentetan kepada cap masa. Ia menyokong penetapan format input menggunakan argumen format:
df.select(to_timestamp(df.STRING_COLUMN, "MM-dd-yyyy").alias("new_date")).show()
2. Fungsi unix_timestamp dan from_unixtime (Spark < 2.2):
Untuk versi Spark sebelum 2.2, gabungan fungsi unix_timestamp dan from_unixtime boleh digunakan:
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()
Dalam kedua-dua kes , kaedah show() boleh digunakan untuk memaparkan DateType yang ditukar lajur.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Lajur Rentetan Pyspark kepada Lajur Tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!