Конвертировать строку в дату с помощью pyspark - PullRequest
0 голосов
/ 13 июня 2019

У меня есть фрейм данных pyspark со строковым столбцом в формате ГГГГММДД, и я пытаюсь преобразовать его в столбец даты (у меня должна быть конечная дата ISO 8061). Поле называется крайним сроком и имеет следующий формат:

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'))

Я всегда получаю нулевые значения.

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 13 июня 2019

с правильным форматом 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|
    +--------+----------+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...