与一组停用词匹配并替换为 Pyspark 中的空白

我在表格中有地址列,如下所示


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

+---------------------------+

有人可以帮我实现这个目标吗,谢谢!


慕的地8271018
浏览 83回答 1
1回答

MM们

以下是您可以如何做到的。希望它能解决您所有的案件。from pyspark.sql import functions as Fstop_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|+---------+
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python