Как преобразовать даты в формате «ДД / ММ / ГГГГ» в фрейме данных pyspark?

1

У меня есть dataframe:

|2018/12/04|    mop-MD00094(Kg.)|      2500.0|  147.0|       367500.0|
|2018/12/04|    RSE-RM00014(Kg.)|     29000.0|   18.8|       545200.0|
|13/04/2018| BETAIN-MD00032(Kg.)|       200.0|  177.0|        35400.0|
|13/04/2018|    MGL-RM00005(Kg.)|     25000.0|   42.5|      1115625.0|
|13/04/2018|    MZE-RM00007(Kg.)|     24750.0|   14.1|       348975.0|

Здесь вы можете видеть, что даты для первых двух строк представлены в формате YYYY/DD/MM и для отдыха в формате DD/MM/YYYY, я хочу изменить все это на формат DD/MM/YYYY. Как это сделать?

Схема:

root
 |-- sDate: string (nullable = true)
 |-- Items: string (nullable = true)
 |-- purchasedQTY: double (nullable = true)
 |-- rate: double (nullable = true)
 |-- purchasedVolume: double (nullable = true)

None
Теги:
apache-spark
pyspark

1 ответ

1
Лучший ответ

Использовать regexp_replace:

df.withColumn("sDate", regexp_replace($"sDate", "([0-9]{4})/([0-9]{2})/([0-9]{2})", "$2/$3/$1"))

Регулярное выражение будет соответствовать году, месяца и дня в трех группах захвата. Затем переупорядоченная дата будет использована для замены старой. Поскольку регулярное выражение будет соответствовать строке только в том формате, который нужно заменить, с другими строками ничего не произойдет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню