【问题标题】:Convert string to date using pyspark使用 pyspark 将字符串转换为日期
【发布时间】:2019-10-27 20:02:47
【问题描述】:

我有一个带有 YYYYMMDD 格式的字符串列的 pyspark 数据框,我正在尝试将其转换为日期列(我应该有一个最终日期 ISO 8061)。该字段名为deadline,格式如下:

deadline
20190530

我尝试了以下解决方案:

from pyspark.sql.functions import unix_timestamp, col
from pyspark.sql.types import TimestampType
from pyspark.sql.types import StringType
from pyspark.sql.functions import from_unixtime
from pyspark.sql.types import DateType

df.select(to_date(df.deadline).alias('dt')).show()

df.withColumn('new_date',to_date(unix_timestamp(df.deadline, 'YYYYMMDD').cast('timestamp'))).show()

orders_concat.select(unix_timestamp(orders_concat.deadline, 'YYYYMMDD')).show()

df.select(unix_timestamp(df.ts_string, 'yyyy/MM/dd HH:mm:ss').cast(TimestampType()).alias("timestamp")).show()


df.select(unix_timestamp(df.deadline, 'yyyy/MM/dd HH:mm:ss').cast(TimestampType()).alias("timestamp")).show()

df.select(to_date(cast(unix_timestamp('deadline', 'YYYYMMDD').alias('timestamp').show()

 ndf = df.withColumn('_1', df['deadline'].cast(DateType()))

 df2 = df.select('deadline', from_unixtime(unix_timestamp('deadline', 'YYYYMMDD')).alias('date'))

我总是得到空值。

有人有建议吗?

【问题讨论】:

  • @Steven 我尝试了该帖子中发布的解决方案,但没有一个奏效。我将编辑代码,因为我没有注意到我发布了旧版本(在新版本中我尝试了正确的数据格式)

标签: string date pyspark type-conversion


【解决方案1】:

使用正确的格式yyyyMMdd,它可以正常工作:

from pyspark.sql import functions as F

df.withColumn('new_date',F.to_date(F.unix_timestamp(df.deadline, 'yyyyMMdd').cast('timestamp'))).show() 

    +--------+----------+                                                           
    |deadline|  new_date|
    +--------+----------+
    |20190530|2019-05-30|
    +--------+----------+

【讨论】:

    猜你喜欢
    • 2016-10-31
    • 2023-01-10
    • 2020-08-15
    • 2020-07-25
    • 2020-06-24
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多