我使用此代码从字符串类型的日期返回日期名称:
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/