【发布时间】:2020-09-16 19:44:26
【问题描述】:
使用 pyspark 2.4.0
我在日期框架中有日期列如下:
我需要将其转换为 DD-MM-YYYY 格式。我尝试了一些解决方案,包括以下代码,但它返回空值,
df_students_2 = df_students.withColumn(
'new_date',
F.to_date(
F.unix_timestamp('dt', '%B %d, %Y').cast('timestamp')))
注意dt列中不同类型的日期格式。如果我可以将整个列制作成一种格式只是为了便于转换,那会更容易,但是由于数据框很大,所以不可能遍历每一列并将其更改为一种格式。我还尝试了以下代码,仅针对我将其包括在内的未来读者,针对我尝试循环执行的 2 种日期类型,但没有成功。
def to_date_(col, formats=(datetime.strptime(col,"%B %d, %Y"), \
datetime.strptime(col,"%d %B %Y"), "null")):
return F.coalesce(*[F.to_date(col, f) for f in formats])
有什么想法吗?
【问题讨论】:
-
你会在这里找到答案 - stackoverflow.com/questions/38080748/…
-
你提到的这个解决方案我仍然得到空值。它有点复杂,因为该列具有不同类型的字符串值。