Как удалить числа из строки, используя RegexTokenizer PySpark? - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу удалить числа с 5 или более цифрами из столбца DataFrame, используя RegexTokenizer PySpark.Мне удалось извлечь эти числа, используя приведенные ниже коды, но кто-нибудь знает, как я могу вместо них удалить их?

Мой код:

regexTokenizer = RegexTokenizer(inputCol="description", outputCol="tokenized_description", gaps=False,pattern="[0-9]{5,}")

Если строка «123abc 122323232», яхотите удалить 122323232 и становится "123abc"

1 Ответ

0 голосов
/ 13 февраля 2019

RegexTokenizer разбивает строку на токены, используя шаблон регулярного выражения в качестве разделителя.

После этого можно объединить слова в массиве, применив функцию pyspark.sql.functions.array_join к преобразованному столбцу.

from pyspark.ml.feature import RegexTokenizer
from pyspark.sql.functions import array_join
from pyspark.sql import SparkSession

spark = SparkSession\
            .builder\
            .appName("Pattern Replacement Example")\
            .getOrCreate()
df = spark.createDataFrame([('123abc 122323232',)],['pattern'])
regexTokenizer = RegexTokenizer(inputCol="pattern", outputCol="words", pattern="[0-9]{5,}")
df_words = regexTokenizer.transform(df)

df_pattern_removed = df_words.select(array_join("words", '').alias("pattern_removed"), "pattern", "words").show(truncate=False)

print(df_pattern_removed.show(truncate=False))

Я предлагаю по возможности использовать Spark SQL, в частности, функцию pyspark.sql.functions.regexp_replace.

from pyspark.sql.functions import regexp_replace
from pyspark.sql import SparkSession

spark = SparkSession\
            .builder\
            .appName("Pattern Replacement Example")\
            .getOrCreate()
df = spark.createDataFrame([('123abc 122323232',)],['pattern'])

df_pattern_removed = df.select(
    regexp_replace('pattern', r'[0-9]{5,}', '').alias('pattern_replaced'), 
    "pattern"
)

print(df_pattern_removed.show(truncate=False))

Обратите внимание, что это соответствует строке, содержащей символы 0-9 трижды, а затем a-z трижды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...