Удаление пунктуации в искровом фрейме - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь удалить пунктуацию из моего текста с помощью регулярных выражений.Я использую плавающие кадры.Это моя функция:

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.;;

Есть ли способубрать пунктуацию с помощью этой функции?Что с ним не так?

1 Ответ

0 голосов
/ 21 сентября 2019

В сообщении об ошибке говорится, что ваш столбец 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')

...