python-3.x - Pyspark列: convert string to datetype

标签 python-3.x dataframe pyspark

我正在尝试将字符串类型的 pyspark 列转换为日期类型,如下所示。

**Date**
31 Mar 2020
2  Apr 2020
29 Jan 2019
8  Sep 2109

所需输出:

31-03-2020
02-04-2020
29-01-2019
08-04-2109  

谢谢。

最佳答案

您可以在内置函数中使用dayofmonth,year,month(或)date_format()(或)from_unixtime(unix_timestamp())对于本例。

示例:

#sample data
df=spark.createDataFrame([("31 Mar 2020",),("2 Apr 2020",),("29 Jan 2019",)],["Date"])
#DataFrame[Date: string]
df.show()
#+-----------+
#|       Date|
#+-----------+
#|31 Mar 2020|
#| 2 Apr 2020|
#|29 Jan 2019|
#+-----------+

from pyspark.sql.functions import *

df.withColumn("new_dt", to_date(col("Date"),"dd MMM yyyy")).\
withColumn("year",year(col("new_dt"))).\
withColumn("month",month(col("new_dt"))).\
withColumn("day",dayofmonth(col("new_dt"))).\
show()

#+-----------+----------+----+-----+---+
#|       Date|    new_dt|year|month|day|
#+-----------+----------+----+-----+---+
#|31 Mar 2020|2020-03-31|2020|    3| 31|
#| 2 Apr 2020|2020-04-02|2020|    4|  2|
#|29 Jan 2019|2019-01-29|2019|    1| 29|
#+-----------+----------+----+-----+---+

#using date_format
df.withColumn("new_dt", to_date(col("Date"),"dd MMM yyyy")).\
withColumn("year",date_format(col("new_dt"),"yyyy")).\
withColumn("month",date_format(col("new_dt"),"MM")).\
withColumn("day",date_format(col("new_dt"),"dd")).show()

#+-----------+----------+----+-----+---+
#|       Date|    new_dt|year|month|day|
#+-----------+----------+----+-----+---+
#|31 Mar 2020|2020-03-31|2020|   03| 31|
#| 2 Apr 2020|2020-04-02|2020|   04| 02|
#|29 Jan 2019|2019-01-29|2019|   01| 29|
#+-----------+----------+----+-----+---+

关于python-3.x - Pyspark列: convert string to datetype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61180948/

相关文章:

pyspark - 为什么需要临时 GCS 存储桶将数据帧写入 BigQuery : pyspark

python-3.x - 将 csv 的整数读取到 Python 中的单个列表中

python计数数据框列值满足条件

python - IndentationError : unexpected indent Python 3 Error [duplicate]

python - Pandas 自定义函数来查找是否是第 1 天、第 2 天等星期一、星期二等 - 欢迎所有建议

python - 在 pandas 系列中使用前一个 "row"的值

python-3.x - Pandas 水平填充 NA 值,但仅限于一个前向填充值

r - 将列表中的行与 R 中有意义的重复行绑定(bind)

apache-spark - Pyspark udf 内存利用率高

python - 将 PySpark 数据帧记录到 MLFlow 工件中