Python中如何判断Spark DataFrame指定列数组是否包含值来过滤数据
PySpark实现数组列包含指定元素的过滤方案
方法1:使用内置array_contains函数(推荐)
这是Spark官方提供的专门用于数组元素存在性判断的函数,性能最优:
from pyspark.sql import SparkSession from pyspark.sql import functions as F # 初始化Spark会话 spark = SparkSession.builder.appName("array_filter").getOrCreate() # 构造示例数据(如果已有数据可跳过这部分) data = [ ("A", ["GB","USA","IN"]), ("B", ["GB","RU"]), ("C", ["IN","BN"]), ("D", ["GB"]) ] df = spark.createDataFrame(data, schema=["Name", "country"]) # 核心过滤逻辑 filtered_df = df.filter(F.array_contains(F.col("country"), "GB")) # 输出结果 filtered_df.show(truncate=False)
方法2:SQL风格表达式写法
如果习惯SQL语法,可以用expr简化代码:
filtered_df = df.filter(F.expr("array_contains(country, 'GB')"))
运行后输出结果和预期完全一致:
+----+----------------+ |Name|country | +----+----------------+ |A |[GB, USA, IN] | |B |[GB, RU] | |D |[GB] | +----+----------------+
内容的提问来源于stack exchange,提问作者a b
相关产品推荐
相关产品推荐

