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

标签 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”未定义

有人可以帮我解决这个问题吗?谢谢

最佳答案

PySpark 文档对此主题有点不清楚,但它内部使用 Java 日期格式。

你可以这样使用:

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

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

现在,要获取工作日的简称,我们可以使用 E/EE/EEE如果你想要全名那么需要给出超过3个E,例如EEEE

简短形式:

import pyspark.sql.functions as f

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

完整:

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

关于python - 从 PySpark python 中的日期获取工作日名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742725/

相关文章:

mongodb - 找不到数据源 : com. mongodb.spark.sql.DefaultSource

python - 在 PySpark 中使用字典进行情感分析

apache-spark - 按一列中的唯一值随机拆分 DataFrame

python - 如何将此 SQL 语句转换为 Python : MID? SUBSTRING?

python - 将多个 isinstance 检查转换为结构模式匹配

python - 根据词性分类的单词生成有意义的句子

PySpark 如何获取查询结果的分区名称?

python - PYSPARK - 如何读取 S3 中所有子文件夹中的所有 csv 文件?

python - 为什么中间中心性的 Networkx 输出是错误的?

python - 导入如何从 python 文件中使用 Boost.Python