Maison >développement back-end >Tutoriel Python >Comment convertir les colonnes de chaîne PySpark au format de date ?

Comment convertir les colonnes de chaîne PySpark au format de date ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-25 15:17:15827parcourir

How to Convert PySpark String Columns to Date Format?

Conversion de la chaîne PySpark au format de date

Vous disposez d'un DataFrame PySpark avec une colonne de chaîne représentant les dates au format MM-jj-aaaa. Votre tentative de convertir cette colonne en format de date à l'aide de la fonction to_date renvoie des valeurs nulles. Cet article fournit des méthodes pour résoudre ce problème.

Recommandation mise à jour (Spark 2.2) :

Pour les versions Spark 2.2 et supérieures, l'approche préférée consiste à utiliser to_date ou fonctions to_timestamp, qui prennent désormais en charge l'argument format. Cela vous permet de spécifier le format d'entrée et de convertir la colonne de chaîne directement en date ou en horodatage :

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))]

Réponse originale (Spark < 2.2) :

Pour les versions antérieures de Spark, vous pouvez utiliser la méthode suivante sans avoir besoin d'une fonction définie par l'utilisateur (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|
# +----------+-------------------+

Dans cette méthode, unix_timestamp convertit la colonne de chaîne en un horodatage Unix et from_unixtime convertit l'horodatage Unix en une colonne de date.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn