Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menukar Lajur Rentetan PySpark kepada Format Tarikh?
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!