从日期中获取PySpark python中的工作日名称

时间:2019-09-01 01:59:25

标签: python pyspark

我使用此代码从字符串类型的日期返回日期名称:

import Pandas as pd
df = pd.Timestamp("2019-04-10")
print(df.weekday_name)

所以当我有“ 2019-04-10”时,代码将返回“星期三”

我想将其应用于Pyspark DataFrame中的一列以获取文本中的日期名称。但这似乎不起作用。

>+-------------+
|Reported Date|
+-------------+
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|
|    1/07/2010|    
+-------------+

我试图这样做:

sparkDF.withColumn("day",weekday_name(pd.Timestamp('Reported Date')))

但是我得到一个错误消息: NameError:名称“ weekday_name”未定义

有人可以帮我吗?谢谢

1 个答案:

答案 0 :(得分:0)

PySpark文档对此主题尚不清楚,但它内部使用Java Date格式。

您可以这样使用:

df.show()
+----------+
|      date|
+----------+
|2010-01-07|
+----------+

df.printSchema()
root
 |-- date: date (nullable = true)

现在,要获取工作日的简称,我们可以使用E/EE/EEE,如果您想使用的全名,则需要提供3个以上的{E {1}}

简短形式:

EEEE

完整


df.withColumn('Day', f.date_format('date', 'E')).show()
+----------+---+
|      date|Day|
+----------+---+
|2010-01-07|Thu|
+----------+---+