Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiert man eine Pyspark-String-Spalte effizient in eine Datumsspalte?
Bei der Arbeit mit Pyspark kann es erforderlich sein, eine String-Spalte, die Datumsangaben darstellt, in eine DateType-Spalte zu konvertieren. Dies tritt häufig auf, wenn die Daten als Zeichenfolgen erfasst werden.
Um dies zu veranschaulichen, betrachten Sie den folgenden DataFrame mit einer Zeichenfolgenspalte namens STRING_COLUMN im Format MM-TT-JJJJ:
df = spark.createDataFrame([ ("01-01-2023",), ("01-02-2023",), ("01-03-2023",), ], ["STRING_COLUMN"]) df.show()
Um STRING_COLUMN in eine DateType-Spalte umzuwandeln, besteht eine Methode darin, die Funktion to_date() zu verwenden, wie im Original vorgeschlagen Versuch:
df.select(to_date(df.STRING_COLUMN).alias("new_date")).show()
Dieser Ansatz kann jedoch dazu führen, dass eine Spalte mit Nullen gefüllt wird. Um dieses Problem zu beheben, sollten Sie eine der folgenden Methoden in Betracht ziehen:
1. to_timestamp-Funktion (Spark 2.2):
Ab Spark 2.2 bietet die to_timestamp()-Funktion eine effizientere und einfachere Möglichkeit, Zeichenfolgen in Zeitstempel zu konvertieren. Es unterstützt die Angabe des Eingabeformats mithilfe des Formatarguments:
df.select(to_timestamp(df.STRING_COLUMN, "MM-dd-yyyy").alias("new_date")).show()
2. unix_timestamp- und from_unixtime-Funktionen (Spark < 2.2):
Für Spark-Versionen vor 2.2 kann eine Kombination aus unix_timestamp- und from_unixtime-Funktionen verwendet werden:
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()
In beiden Fällen , kann die Methode show() verwendet werden, um die konvertierte DateType-Spalte anzuzeigen.
Das obige ist der detaillierte Inhalt vonWie konvertiert man eine Pyspark-String-Spalte effizient in eine Datumsspalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!