删除标点符号在 pyspark 中不起作用
remove punctuation is not working in pyspark
我想制作我的 pyspark 代码,以便它可以从数据框列中删除标点符号。我的代码是这样的:
def split(x):
punc = '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
x = x.replace(punc, ' ')
return x
结果:
id |
+--------
|187.080/B1
它应该删除所有标点符号,但我不确定我应该编辑什么才能让它起作用?
如果您遇到的问题是标点符号,请尝试使用下面提供的代码段更新 split()
。
确保将 import string
放在文件的顶部。
import string
def split(value):
for i in range (len(string.punctuation)):
value = value.replace(string.punctuation[i], '')
return value
如果有帮助请告诉我。
首先,您需要将函数注册为 UDF 才能使用该方法。
虽然,替换语句不起作用,因为它试图匹配整个字符串 punc,它没有出现在您的值中。
您可以使用正则表达式或迭代 punc 字符串,替换每个字符(我认为第二种方法更快):
def split(value):
punc = '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
for ch in punc:
value = value.replace(ch, ' ')
value = value.replace(' ','')
return value
只是为了性能说明,总是尝试搜索是否在 pyspark 模块 (pyspark.sql.functions) 中实现了类似的功能,因为它们总是比 UDF 快得多。
我想制作我的 pyspark 代码,以便它可以从数据框列中删除标点符号。我的代码是这样的:
def split(x):
punc = '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
x = x.replace(punc, ' ')
return x
结果:
id |
+--------
|187.080/B1
它应该删除所有标点符号,但我不确定我应该编辑什么才能让它起作用?
如果您遇到的问题是标点符号,请尝试使用下面提供的代码段更新 split()
。
确保将 import string
放在文件的顶部。
import string
def split(value):
for i in range (len(string.punctuation)):
value = value.replace(string.punctuation[i], '')
return value
如果有帮助请告诉我。
首先,您需要将函数注册为 UDF 才能使用该方法。 虽然,替换语句不起作用,因为它试图匹配整个字符串 punc,它没有出现在您的值中。 您可以使用正则表达式或迭代 punc 字符串,替换每个字符(我认为第二种方法更快):
def split(value):
punc = '!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
for ch in punc:
value = value.replace(ch, ' ')
value = value.replace(' ','')
return value
只是为了性能说明,总是尝试搜索是否在 pyspark 模块 (pyspark.sql.functions) 中实现了类似的功能,因为它们总是比 UDF 快得多。