删除火花数据框中的标点符号
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>
而不是 string
。 regexp_replace
需要一个字符串列。
为了将 if 应用于字符串数组,您可以先从数组中创建一个字符串,然后再次拆分该字符串
def removePunctuation(column):
return split(trim(lower(regexp_replace(concat_ws("SEPARATORSTRING", column),'[^\sa-zA-Z0-9]', ''))), "SEPARATORSTRING").alias('stopped')
我正在尝试使用正则表达式从我的标记化文本中删除标点符号。我正在使用火花数据帧。 这是我的功能:
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>
而不是 string
。 regexp_replace
需要一个字符串列。
为了将 if 应用于字符串数组,您可以先从数组中创建一个字符串,然后再次拆分该字符串
def removePunctuation(column):
return split(trim(lower(regexp_replace(concat_ws("SEPARATORSTRING", column),'[^\sa-zA-Z0-9]', ''))), "SEPARATORSTRING").alias('stopped')