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

问题描述 投票:0回答:2

我尝试使用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

请帮助吗?

pyspark date-format
2个回答
0
投票

首先让我们创建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|
+----------+--------+

0
投票

您可以使用内置的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()

结果:

results

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

© www.soinside.com 2019 - 2024. All rights reserved.