Pyspark - конвертировать заданную c строку в формат даты - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть дата-фрейм pyspark со строковым столбцом в формате Mon-YY например. «17 января», и я пытаюсь преобразовать это в столбец даты. Я пытался сделать это так, но это не сработало:

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

Можно ли сделать это как в SQL или мне нужно написать специальную функцию для преобразования?

1 Ответ

0 голосов
/ 27 апреля 2020

Вы должны использовать действительный 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|
+-------------------+
...