我有一个数据框,其中的date / time列是字符串数据类型,看起来像"Tue Apr 21 01:16:19 2020"
。如何在pyspark中将其转换为格式为2020/04/21
的日期列。
我尝试过这样的事情
选项1:
df = df.withColumn("event_time2",from_unixtime(unix_timestamp(col("Event_time"), 'MM/dd/yyy')))
选项2:
df= df.withColumn("event_time2",unix_timestamp(col("Event_time"),'yyyy-MM-dd HH:mm:ss').cast("timestamp"))
但都返回null
答案 0 :(得分:1)
您可以使用 to_date
和 date_format
。 EEE
适用于 day in the week
。请参阅Java Simple Data Format以获取完整列表
from pyspark.sql import functions as F
df.withColumn("Event_time2", F.to_date("Event_time", 'EEE MMM dd HH:mm:ss yyyy')).show(truncate=False)
#+------------------------+-----------+
#|Event_time |Event_time2|
#+------------------------+-----------+
#|Tue Apr 21 01:16:19 2020|2020-04-21 |
#+------------------------+-----------+
df.withColumn("Event_time2", F.date_format(F.to_date("Event_time", 'EEE MMM dd HH:mm:ss yyyy'),'yyyy/MM/dd')).show(truncate=False)
#+------------------------+-----------+
#|Event_time |Event_time2|
#+------------------------+-----------+
#|Tue Apr 21 01:16:19 2020|2020/04/21 |
#+------------------------+-----------+