Pyspark удаляет несколько символов в столбце данных - PullRequest
0 голосов
/ 08 июня 2018

Глядя на pyspark, я вижу translate и regexp_replace, чтобы помочь мне одним символом, который существует в столбце dataframe.

Мне было интересно, есть ли способ указать несколько строк в regexp_replace или перевести так, чтобы он мог их проанализировать и заменить чем-то другим.

Вариант использования: удалить все $, #и запятая (,) в столбце A

1 Ответ

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

Вы можете использовать pyspark.sql.functions.translate(), чтобы сделать несколько замен.Передайте строку букв для замены и другую строку равной длины, которая представляет значения замены.

Например, допустим, у вас был следующий DataFrame:

import pyspark.sql.functions as f
df = sqlCtx.createDataFrame([("$100,00",),("#foobar",),("foo, bar, #, and $",)], ["A"])
df.show()
#+------------------+
#|                 A|
#+------------------+
#|           $100,00|
#|           #foobar|
#|foo, bar, #, and $|
#+------------------+

и вы хотите заменить('$', '#', ',') с ('X', 'Y', 'Z').Просто используйте translate, например:

df.select("A", f.translate(f.col("A"), "$#,", "XYZ").alias("replaced")).show()
#+------------------+------------------+
#|                 A|          replaced|
#+------------------+------------------+
#|           $100,00|           X100Z00|
#|           #foobar|           Yfoobar|
#|foo, bar, #, and $|fooZ barZ YZ and X|
#+------------------+------------------+

Если вместо этого вы хотите удалить все экземпляры ('$', '#', ','), вы можете сделать это с помощью pyspark.sql.functions.regexp_replace().

df.select("A", f.regexp_replace(f.col("A"), "[\$#,]", "").alias("replaced")).show()
#+------------------+-------------+
#|                 A|     replaced|
#+------------------+-------------+
#|           $100,00|        10000|
#|           #foobar|       foobar|
#|foo, bar, #, and $|foo bar  and |
#+------------------+-------------+

Шаблон "[\$#,]" означает совпадение с любым символом в скобках.$ необходимо экранировать, потому что оно имеет особое значение в регулярном выражении.

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