如何替换pyspark中的特殊字符?

y3bcpkx1  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(792)

我对pyspark还比较陌生,我正在尝试用pyspark做一些文本预处理。我有一个专栏 Name 以及 ZipCode 属于sparkDataframe new_df . “name”列包含如下值 WILLY:S MALMÖ, EMPORIA 以及 ZipCode 包含如下值 123 45 这也是一根弦。我想做的是我想删除像 : , , 等,并希望删除之间的空间 ZipCode . 我尝试了以下方法,但似乎没有任何效果:

new_df = new_df.withColumn('Name', sfn.regexp_replace('Name', r',' , ' '))
new_df = new_df.withColumn('ZipCode', sfn.regexp_replace('ZipCode', r' ' , ''))

我也从so和其他网站上试过其他东西。似乎什么都没用。

vlju58qv

vlju58qv1#

使用 [,|:] 匹配 , 或者 : 并替换为空格 ' ' 在“名称”列和“zipcode”中搜索空格 ' ' 并替换为空字符串 '' . Example: ```
new_df.show(10,False)

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

|Name |ZipCode|

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

|WILLY:S MALMÖ, EMPORIA|123 45 |

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

new_df.withColumn('Name', regexp_replace('Name', r'[,|:]' , ' ')).
withColumn('ZipCode', regexp_replace('ZipCode', r' ' , '')).
show(10,False)

or

new_df.withColumn('Name', regexp_replace('Name', '[,|:]' , ' ')).
withColumn('ZipCode', regexp_replace('ZipCode', '\s+' , '')).
show(10,False)

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

|Name |ZipCode|

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

|WILLY S MALMÖ EMPORIA|12345 |

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

相关问题