我想知道如何使用 Python2 删除 Pyspark 数据帧中的变音符号。我需要类似的东西
from pyspark.sql.session import SparkSession
from pyspark import SparkContext
import pyspark.sql.functions as sf
from pyspark.sql.types import StringType
df = sc.parallelize([(u'pádlo', 1), (u'dřez', 4)]).toDF(['text', 'num'])
def remove_diacritics(s):
return unidecode.unidecode(s)
rem_udf = sf.udf(remove_diacritics, StringType())
df.select(rem_udf('text'))
不幸的是,unidecode
模块在我们的集群中不可用。
除了手动替换所有可能的字符之外,我是否缺少任何自然解决方案?请注意,预期结果是[padlo, drez]
您可以使用SQL翻译的模拟来替换基于两个"字典"的字符:
from pyspark.sql.session import SparkSession
from pyspark import SparkContext
import pyspark.sql.functions as sf
from pyspark.sql.types import StringType
charsFrom = 'řá' #fill those strings with all diactricts
charsTo = 'ra' #and coresponding latins
df = sc.parallelize([(u'pádlo', 1), (u'dřez', 4)]).toDF(['text', 'num'])
df = df.select(sf.translate('text', charsFrom, charsTo),'num')
它将替换第一个字符串中每个字符的每次出现到第二个字符串中的对应字符。