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
Libérer: 2024-11-25 15:17:15
original
763 Les gens l'ont consulté

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))]
Copier après la connexion

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|
# +----------+-------------------+
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal