[英]changing date format in pyspark
I am trying to change date format from 20211018
to 202110180000
.我正在尝试将日期格式从
20211018
更改为202110180000
。 of a column of a spark data frame.火花数据框的一列。
I have the following code to create new dt
column out of existing data_dt
我有以下代码从现有的
data_dt
创建新的dt
列
func = udf (lambda x: datetime.datetime.strptime(x, '%Y%m%d'), DateType())
result_df = result_df.withColumn('dt', func(col('data_dt')))
result_df = result_df.select('data_dt',
from_unixtime(unix_timestamp('data_dt', '%Y%m%d0000')).alias('dt'))
which throws a error:引发错误:
'ValueError: time data '20211018' does not match format '%Y%m%d0000''
'ValueError:时间数据'20211018'与格式'%Y%m%d0000'不匹配
I tried the correct format of date "%Y%m%d%H%M"
.我尝试了正确的日期格式
"%Y%m%d%H%M"
。 It throws other error.它会引发其他错误。 Please let me know how to fix this.
请让我知道如何解决这个问题。 I want defaulted
0000
at the end.我希望最后默认为
0000
。
No need for UDF.不需要UDF。 Simply cast the string into date type using
to_date
then apply date_format
function:只需使用
to_date
将字符串转换为日期类型,然后应用date_format
function:
from pyspark.sql import functions as F
df = spark.createDataFrame([("20211018",)], ["data_dt"])
result_df = df.withColumn(
"dt",
F.date_format(F.to_date("data_dt", "yyyyMMdd"), "yyyyMMddHHmm")
)
result_df.show()
#+--------+------------+
#| data_dt| dt|
#+--------+------------+
#|20211018|202110180000|
#+--------+------------+
See Spark docs for Datetime Patterns for Formatting and Parsing有关格式化和解析的日期时间模式,请参阅 Spark 文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.