Convertir pyspark chaîne de format de date
J'ai une date pyspark dataframe avec une colonne de type chaîne dans le format de MM-dd-yyyy
et je suis tenté de le convertir en une colonne de date.
J'ai essayé:
df.select(to_date(df.STRING_COLUMN).alias('new_date')).show()
et je reçois une chaîne de valeurs null. Quelqu'un peut-il aider?
- Sauf si vous utilisez l'un des TimeSeriesRDD addons (voir l'Étincelle 2016 de la conférence pour discussion, il ya deux que je connais, mais les deux sont encore en développement), il n'y a pas beaucoup de grands outils pour le temps de la série. En conséquence, j'ai trouvé il y a rarement une raison à la peine de convertir des chaînes de type datetime objets, si votre objectif est verious types de
groupBy
ou rééchantillonnage des opérations. Il vous suffit de lancer sur les colonnes de la chaîne. - L'analyse sera réalisée en utilisant peu ou pas de
groupBy
mais plutôt des études longitudinales de dossiers médicaux. Donc être capable de manipuler la date est importante - Double Possible de Pourquoi je reçois des résultats nuls de date_format() PySpark fonction?
Vous devez vous connecter pour publier un commentaire.
Il est possible (à préférer?) pour ce faire, sans un udf:
Mise à jour (1/10/2018):
Pour Spark 2.2+ la meilleure façon de le faire est probablement à l'aide de la
to_date
outo_timestamp
fonctions qui prennent en charge l'format
argument. À partir de la documentation:to_date()
avec l'argument format est spark 2.2+.to_date
existait avant la version 2.2, mais le format de l'option n'existe pasVoici le résultat:
udf
ne devrait pas être nécessaire ici, mais le construit ins pour la manipulation de ce sont atroces. C'est ce que je ferais pour l'instant trop.La strptime() approche ne fonctionne pas pour moi. Je reçois une autre solution plus propre, à l'aide de cast:
2008-08-01T14:45:37Z
à un horodatage au lieu de la date,df = df.withColumn("CreationDate",df['CreationDate'].cast(TimestampType()))
fonctionne bien... (Étincelle 2.2.0)Dans la accepté de répondre à la mise à jour vous ne voyez pas l'exemple de la
to_date
fonction, donc, une autre solution en utilisant ce serait:Essayez ceci: