首页 > 解决方案 > Pyspark - 将特定字符串转换为日期格式

问题描述

我有一个日期 pyspark 数据框,其中包含格式为Mon-YY例如的字符串列。'Jan-17' 我正在尝试将其转换为日期列。我试过这样做,但没有成功:

df.select(to_timestamp(df.t, 'MON-YY HH:mm:ss').alias('dt'))

是否可以像在 SQL 中那样做,或者我需要编写一个特殊的转换函数?

标签: pysparkapache-spark-sql

解决方案


您应该使用有效的Java 日期格式。以下将起作用

import pyspark.sql.functions as psf
df.select(psf.to_timestamp(psf.col('t'), 'MMM-YY HH:mm:ss').alias('dt'))

Jan-172017-01-01在那种情况下会变成

例子

df = spark.createDataFrame([("Jan-17 00:00:00",'a'),("Apr-19 00:00:00",'b')], ['t','x'])
df.show(2)
+---------------+---+
|              t|  x|
+---------------+---+
|Jan-17 00:00:00|  a|
|Apr-19 00:00:00|  b|
+---------------+---+

转换为时间戳:

import pyspark.sql.functions as psf
df.select(psf.to_timestamp(psf.col('t'), 'MMM-YY HH:mm:ss').alias('dt')).show(2)
+-------------------+
|                 dt|
+-------------------+
|2017-01-01 00:00:00|
|2018-12-30 00:00:00|
+-------------------+

推荐阅读