Вы можете использовать pyspark.sql.functions.translate()
< /a>, чтобы сделать несколько замен. Передайте строку букв для замены и другую строку равной длины, которая представляет значения замены.
Например, предположим, что у вас есть следующий 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 |
#+------------------+-------------+
Шаблон "[\$#,]"
означает соответствие любому из символов в скобках. $
нужно экранировать, потому что он имеет особое значение в регулярном выражении.
person
pault
schedule
08.06.2018