pyspark - Pyspark - 将特定字符串转换为日期格式
问题描述
我有一个日期 pyspark 数据框,其中包含格式为Mon-YY
例如的字符串列。'Jan-17' 我正在尝试将其转换为日期列。我试过这样做,但没有成功:
df.select(to_timestamp(df.t, 'MON-YY HH:mm:ss').alias('dt'))
是否可以像在 SQL 中那样做,或者我需要编写一个特殊的转换函数?
解决方案
您应该使用有效的Java 日期格式。以下将起作用
import pyspark.sql.functions as psf
df.select(psf.to_timestamp(psf.col('t'), 'MMM-YY HH:mm:ss').alias('dt'))
Jan-17
2017-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|
+-------------------+