У меня есть 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
Использовать regexp_replace
:
df.withColumn("sDate", regexp_replace($"sDate", "([0-9]{4})/([0-9]{2})/([0-9]{2})", "$2/$3/$1"))
Регулярное выражение будет соответствовать году, месяца и дня в трех группах захвата. Затем переупорядоченная дата будет использована для замены старой. Поскольку регулярное выражение будет соответствовать строке только в том формате, который нужно заменить, с другими строками ничего не произойдет.