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

PySpark如何过滤数组列含"season":"summer"的数据行?

PySpark过滤数组中包含指定键值对的行

问题分析

你的Column B是数组类型,内部包含JSON对象,直接用数组和字符串summer做相等/不等判断肯定不生效——因为数组是复杂结构,必须遍历内部元素检查特定字段。

解决方案

使用PySpark的高阶函数exists遍历数组元素,判断是否存在season: "summer"的对象,再通过取反过滤掉符合条件的行:

代码示例

from pyspark.sql import functions as F

# 过滤掉Column B数组中存在season=summer的行
filtered_df = data_frame.filter(
    ~F.exists(
        F.col("Column B"),
        lambda elem: elem.getItem("season") == "summer"
    )
)

# 写入Delta格式文件
filtered_df.write.format("delta").mode("overwrite").save("file://path")

代码说明

  • F.exists(col, func):遍历Column B数组的每个元素,用lambda表达式检查元素是否满足条件
  • elem.getItem("season"):获取数组元素中的season字段(如果Column B的元素是Struct类型,也可以写成elem.season)
  • ~:逻辑取反,保留数组中不存在season=summer的行

内容的提问来源于stack exchange,提问作者Alyssa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:58:25