如何将日期格式 'YYYY-MM-DD' 转换为 pyspark 中的 ddMMyy?

how to convert the date format 'YYYY-MM-DD' to ddMMyy in pyspark?

我尝试使用 to_date 将日期格式 2018-07-12 转换为 ddMMyy,但在转换日期格式后我得到 null

df = spark.createDataFrame([('2018-07-12',)], ['Date_col'])

df = df.withColumn('new_date',to_date('Date_col', 'ddMMyy'))

我需要使用此逻辑来转换数据框列。我是 spark 编程的新手,尝试了很多解决方案但没有任何帮助。

我需要连接一列的 ddMMyy 和另一列的 hhss

有什么帮助吗?

首先让我们创建DataFrame

df = spark.createDataFrame([('2018-07-12',)], ['Date_col'])
df.show()
+----------+
|  Date_col|
+----------+
|2018-07-12|
+----------+

然后我们将为此定义 UDF 函数。

from datetime import datetime
import pyspark.sql.types as T
import pyspark.sql.functions as F


def user_defined_timestamp(date_col):
    _date = datetime.strptime(date_col, '%Y-%m-%d')
    return _date.strftime('%d%m%y')

user_defined_timestamp_udf = F.udf(user_defined_timestamp, T.StringType())

最后我们将在 DateFrame 上应用我们的函数以创建我们想要的列。

df = df.withColumn('new_date', user_defined_timestamp_udf('Date_col'))
df.show()
+----------+--------+
|  Date_col|new_date|
+----------+--------+
|2018-07-12|  120718|
+----------+--------+

您可以使用内置的pyspark.sql.functions.date_format(date, format)函数:

from pyspark.sql.functions import date_format

df = spark.createDataFrame([('2018-07-12',)], ['dt'])
df.select(date_format('dt', 'ddMMyy').alias('date')).collect()

结果:

参考:https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=dateformat#pyspark.sql.functions.date_format