如何使用 PySpark 的 RegexTokenizer 删除字符串中的数字?

2024-09-24 02:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用PySpark的regexetkenizer从DataFrame列中删除5位或更多位数的数字。我可以使用下面的代码提取这些数字,但是有人知道我如何删除它们吗?在

我的代码:

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

如果字符串是“123abc122323232”,我希望它删除122323232并变成“123abc”


Tags: 代码falsedataframe数字descriptionpysparkpatternoutputcol
1条回答
网友
1楼 · 发布于 2024-09-24 02:24:34

RegexTokenizer使用regex模式作为分隔符将字符串拆分为标记。在

您可以通过对转换后的列应用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))

我建议尽可能使用sparksql,尤其是pyspark.sql.functions.regexp_replace函数。在

^{pr2}$

请注意,这与一个字符串匹配,该字符串包含0-9三次后接a-z三次的字符。在

相关问题 更多 >