Как удалить обратную косую черту из всех столбцов в кадре данных Spark? - PullRequest
0 голосов
/ 06 июня 2018

Как я могу удалить все \ символов, которые являются частью строк, из нескольких столбцов в искровой DF?

Пример строки:

11~ADX\|0.00\|ZZ\|BP\|WHT~SE\|41\|0064~GE\|0001\

Ожидаемый результат:

11~ADX|0.00|ZZ|BP|WHT~SE|41|0064~GE|0001

1 Ответ

0 голосов
/ 06 июня 2018

Используйте foldLeft для всех столбцов в кадре данных, таким образом, вы можете использовать regexp_replace для каждого отдельного столбца и возвращать окончательный кадр данных.Используя примерный фрейм данных в вопросе (называемый df ниже), чтобы удалить все обратные косые черты :

val df2 = df.columns.foldLeft(df)((df, c) => df.withColumn(c, regexp_replace(col(c), "\\\\", "")))

Вы также можете экранировать все обратные косые черты со следующими:

val df2 = df.columns.foldLeft(df)((df, c) => df.withColumn(c, regexp_replace(col(c), "\\\\", "\\\\\\\\")))

Если не все столбцы должны использоваться, создайте отдельную переменную, содержащую используемые столбцы.Чтобы использовать все столбцы, кроме одного (столбец col ниже), используйте:

val cols = df.columns diff List("col")
cols.foldLeft ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...