如何在Pyspark Dataframe的String列中筛选含字母或特殊字符的值
Pyspark 过滤非纯数字字符串列实现方法
我们可以用Pyspark内置的rlike正则匹配方法实现需求,只要id列存在非0-9的字符(包括字母、特殊符号等)就会被筛选出来,具体实现如下:
- 导入依赖并构造测试数据
from pyspark.sql import SparkSession from pyspark.sql.functions import col # 初始化SparkSession spark = SparkSession.builder.appName("filter_non_numeric").getOrCreate() # 构造测试数据 data = [("12345",), ("23456",), ("3940A",), ("19045",), ("2BB56",), ("3(40A",)] df = spark.createDataFrame(data, schema=["id"])
- 核心过滤代码
# 筛选包含非数字字符的记录 result_df = df.filter(col("id").rlike("[^0-9]")) # 打印结果 result_df.show()
- 输出结果和你预期的一致:
+------+ | id| +------+ | 3940A| | 2BB56| |3(40A | +------+
补充说明:[^0-9]是正则排除字符组,代表匹配任意不属于0-9范围的字符,只要id列中存在任意一个这类字符,rlike就会返回True,符合筛选条件。
内容的提问来源于stack exchange,提问作者Jopsiton
相关产品推荐
相关产品推荐

