Как преобразовать даты в формате «ДД / ММ / ГГГГ» в фрейме данных pyspark? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть датафрейм:

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

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

Схема:

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

None

1 Ответ

0 голосов
/ 28 августа 2018

Использование regexp_replace:

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

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

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