我对Pyspark还是陌生的,我正在尝试使用Pyspark进行一些文本预处理。我有一个列Name
和ZipCode
,它们属于一个火花数据帧new_df
。 “名称”列包含类似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和其他网站上尝试了其他方法。似乎没有任何效果。
使用[,|:]
匹配,
或:
并用名称列中的空格' '
替换,对于邮政编码搜索空格' '
并用空白替换字符串''
。
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 |
#+-----------------------+-------+