我有一个数据框,其中"MM/dd/yyyy"
格式的日期字段为字符串,我想在新字段中提取Scala中星期几的值。例如,我有数据框df
:
df.show()
------------
date
-----------
12/14/2017
12/13/2017
我想获得以下输出:
--------------------------------------------
date | day | month | year | DayOfWeek
--------------------------------------------
12/14/2017| 14 | 12 | 2017 | Thursday
12/13/2017| 13 | 12 | 2017 | Wednesday
我目前有这段代码:
df.withColumn("day", dayofmonth(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("month", month(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("year", year(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("dayofweek", something(to_date...)
我没有找到提取dayofweek的功能 - 我应该怎么做?
另一个问题是,使用函数dayofmonth
,month
,year
是效果的最佳选择,还是有更好的方法?
答案 0 :(得分:2)
您可以使用date_format
并指定格式为"EEEE"
以获取星期几。这将为您提供全名,如果您希望缩短,只需使用"E"
,即Mon而不是星期一。
df.withColumn("dayofweek", date_format(to_date($"date", "MM/dd/yyyy"), "EEEE"))
从表现的角度来看,我认为你不必担心。您正在使用的功能,包括上面的功能,都很快,而且不是很复杂。使用另一种观点,如果另一种方式更快,那么这些函数很可能会使用这种方式。