我尝试使用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()
结果: