我使用此代码从字符串类型的日期返回日期名称:
import Pandas as pd
df = pd.Timestamp("2019-04-10")
print(df.weekday_name)
Run Code Online (Sandbox Code Playgroud)
所以当我有“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|
+-------------+
Run Code Online (Sandbox Code Playgroud)
我试图这样做:
sparkDF.withColumn("day",weekday_name(pd.Timestamp('Reported Date')))
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息:NameError: name 'weekday_name' is not defined
谁能帮我这个?谢谢
PySpark 文档在这个主题上有点不清楚,但它在内部使用 Java 日期格式。
你可以这样使用:
df.show()
+----------+
| date|
+----------+
|2010-01-07|
+----------+
df.printSchema()
root
|-- date: date (nullable = true)
Run Code Online (Sandbox Code Playgroud)
现在,要获得我们可以使用的工作日的短名称,E/EE/EEE如果您想要全名,则需要提供超过 3E 的名称,例如EEEE
简写:
import pyspark.sql.functions as f
df.withColumn('Day', f.date_format('date', 'E')).show()
+----------+---+
| date|Day|
+----------+---+
|2010-01-07|Thu|
+----------+---+
Run Code Online (Sandbox Code Playgroud)
满的:
df.withColumn('Day', f.date_format('date', 'EEEE')).show()
+----------+--------+
| date| Day|
+----------+--------+
|2010-01-07|Thursday|
+----------+--------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2666 次 |
| 最近记录: |