慕的地8271018
2023-06-27 10:37:21
我在表格中有地址列,如下所示 >>> spark.sql("select add1 from test").show(10,False)+---------------------------+|add1 |+---------------------------+|PO BOX 1111DUBAI UAE ||P.O. BOX 2222DUBAI - U.A.E|+---------------------------+我必須匹配一組單詞并將它們從列中刪除只是為了比較目的我能夠用空格替換單個單詞,如下所示(在本例中為“UAE”)spark.sql("select regexp_replace(add1,'UAE','') from test").show(10,False)+---------------------------+|regexp_replace(add1, UAE, )|+---------------------------+|PO BOX 1111DUBAI ||P.O. BOX 2222DUBAI - U.A.E|+---------------------------+但我想刪除所有特殊字符和一組停用詞,例如 {'UAE','UAE', 'UA E', 'PO', 'P O'}期望的輸出:spark.sql("select regexp_replace(add1,'UAE','') from test").show(10,False)+---------------------------+|regexp_replace(add1, UAE, )|+---------------------------+|1111DUBAI ||2222DUBAI |+---------------------------+有人可以幫我實現(xiàn)這個目標(biāo)嗎,謝謝!
1 回答

MM們
TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
以下是您可以如何做到的。希望它能解決您所有的案件。
from pyspark.sql import functions as F
stop_words = {'UAE','U.A.E', 'U A E', 'PO', 'P O', 'BOX'}
df2 = df.withColumn(
"add1",
F.regexp_replace(F.col("add1"), r"[^a-zA-Z0-9\s]", "")
)
for stop_word in stop_words:
df2 = df2.withColumn(
"add1",
F.trim(F.regexp_replace(F.col("add1"), stop_word, ""))
)
df2.show()
+---------+
| add1|
+---------+
|1111DUBAI|
|2222DUBAI|
+---------+
添加回答
舉報
0/150
提交
取消