我想只保留 pyspark 字符串列中的唯一字母。请建议任何不使用 udfs 的解决方案。我需要一个 Pyspark 解决方案,而不是论坛上存在的多个 pythonic 解决方案。谢谢
输入 上校 abcbb12b
输出 上校 abc
我尝试使用 re.sub 但无法使其工作
我们可以利用正则表达式来实现最终目标。
输入数据框
+--------+
| value|
+--------+
|abcbb12b|
+--------+
导入必要的包
from pyspark.sql.functions import regexp_replace
df = df.withColumn("alphabet", regexp_replace("value", "[^a-zA-Z$]", ""))
df = df.withColumn("alphabet_set", regexp_replace(col("alphabet"), r"(.)\1+", ""))
输出数据帧
+--------+--------+------------+
| value|alphabet|alphabet_set|
+--------+--------+------------+
|abcbb12b| abcbbb| abc|
+--------+--------+------------+