Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiere ich PySpark-String-Spalten in das Datumsformat?
PySpark-Zeichenfolge in Datumsformat konvertieren
Sie haben einen PySpark-DataFrame mit einer Zeichenfolgenspalte, die Datumsangaben im MM-TT-JJJJ-Format darstellt. Ihr Versuch, diese Spalte mithilfe der to_date-Funktion in ein Datumsformat zu konvertieren, gibt Nullen zurück. Dieser Artikel bietet Methoden zur Behebung dieses Problems.
Aktualisierte Empfehlung (Spark 2.2):
Für Spark-Versionen 2.2 und höher besteht der bevorzugte Ansatz darin, to_date oder zu verwenden to_timestamp-Funktionen, die jetzt das Formatargument unterstützen. Dadurch können Sie das Eingabeformat angeben und die Zeichenfolgenspalte direkt in einen Datums- oder Zeitstempel konvertieren:
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))]
Originalantwort (Spark < 2.2):
Für frühere Spark-Versionen können Sie die folgende Methode verwenden, ohne dass eine benutzerdefinierte Funktion (UDF) erforderlich ist:
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| # +----------+-------------------+
In dieser Methode unix_timestamp konvertiert die Zeichenfolgenspalte in einen Unix-Zeitstempel und from_unixtime konvertiert den Unix-Zeitstempel in eine Datumsspalte.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich PySpark-String-Spalten in das Datumsformat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!