You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:36:03