2016-05-19 16 views
4

Ich habe einen Datenrahmen, die ein Datum im Format hat:Extract Datum aus einer String-Spalte enthält, Zeitstempel in Pyspark

+----------------------+ 
|date     | 
+----------------------+ 
|May 6, 2016 5:59:34 AM| 
+----------------------+ 

Ich beabsichtige YYYY-MM-DD das Datum von diesem in dem Format zu extrahieren; also sollte das Ergebnis für das oben genannte Datum sein - 2016-05-06.

Aber wenn ich extrahieren wird mit dem folgenden:

df.withColumn('part_date', from_unixtime(unix_timestamp(df.date, "MMM dd, YYYY hh:mm:ss aa"), "yyyy-MM-dd")) 

bekomme ich folgendes Datum

2015-12-27 

Kann jemand bitte dies mitteilen? Ich habe nicht vor, meine df in rdd zu konvertieren, um die Datetime-Funktion von Python zu verwenden und diese im Dataframe selbst zu verwenden.

Antwort

12

Es gibt einige Fehler in Ihrem Muster. Hier ist ein Vorschlag:

from_pattern = 'MMM d, yyyy h:mm:ss aa' 
to_pattern = 'yyyy-MM-dd' 
df.withColumn('part_date', from_unixtime(unix_timestamp(df['date'], from_pattern), to_pattern)).show() 
+----------------------+----------+ 
|date     |part_date | 
+----------------------+----------+ 
|May 6, 2016 5:59:34 AM|2016-05-06| 
+----------------------+----------+