删除火花数据框中的标点符号

Removing punctuation in spark dataframe

我正在尝试使用正则表达式从我的标记化文本中删除标点符号。我正在使用火花数据帧。 这是我的功能:

def removePunctuation(column):
     return trim(lower(regexp_replace(column,'[^\sa-zA-Z0-9]', ''))).alias('stopped')

当我通过以下方式执行此功能时:

removed_df.select(removePunctuation(col('stopped'))).show(truncate=False)

我有错误:

Py4JJavaError: An error occurred while calling o736.select.
: org.apache.spark.sql.AnalysisException: cannot resolve 'regexp_replace(`stopped`, '[^\sa-zA-Z0-9]', '')' due to data type mismatch: argument 1 requires string type, however, '`stopped`' is of array<string> type.;;

有什么方法可以通过这个功能去除标点符号吗?有什么问题吗?

错误消息表明您的列 stopped 的类型为 array<string> 而不是 stringregexp_replace 需要一个字符串列。

为了将 if 应用于字符串数组,您可以先从数组中创建一个字符串,然后再次拆分该字符串

def removePunctuation(column):
     return split(trim(lower(regexp_replace(concat_ws("SEPARATORSTRING", column),'[^\sa-zA-Z0-9]', ''))), "SEPARATORSTRING").alias('stopped')