如何使用PySpark移除DataFrame中City列的非ASCII及特定字符
PySpark DataFrame City列数据清洗实现方案
可以通过PySpark的regexp_replace函数结合正则表达式一次性处理所有需要移除的字符,具体实现如下:
核心思路
用正则表达式匹配所有待移除的目标内容,包括<sup>、</sup>标签、?字符以及所有非ASCII字符,通过regexp_replace将匹配到的内容替换为空字符串。
代码示例
from pyspark.sql.functions import regexp_replace # 假设你的原始DataFrame名为df cleaned_df = df.withColumn( "cleaned_city", # 生成清洗后的新列,若需覆盖原列可改为"City" regexp_replace("City", r"<\/?sup>|\?|[^\x00-\x7F]", "") )
正则表达式说明
<\/?sup>:匹配并移除<sup>和</sup>标签,\/?表示可选的斜杠,同时匹配两种标签格式\?:匹配并移除?字符(正则中?是特殊元字符,需用反斜杠转义)[^\x00-\x7F]:匹配并移除所有非ASCII字符(ASCII字符范围为十六进制\x00到\x7F,^表示取反)
清洗效果验证
针对你列出的City列取值,清洗后结果如下:
Venice®→VeniceVeniceÆ→VeniceVenice?→VeniceVenice<sup>→VeniceVenice<sup>®</sup>→VeniceVenice→Venice
内容的提问来源于stack exchange,提问作者Baobab
相关产品推荐
相关产品推荐

