如何过滤 PySpark 中数组列中的值?

Posted

技术标签:

【中文标题】如何过滤 PySpark 中数组列中的值?【英文标题】:How to filter values in an array column in PySpark? 【发布时间】:2020-11-11 17:02:36 【问题描述】:

我在 Pyspark 中有一个 ArrayType 列。我只想过滤每一行的数组中的值(我不想过滤掉实际的行!)而不使用 UDF。

例如,给定这个数据集的 A 列是 ArrayType:

|     A      |
______________
|[-2, 1, 7]  |
|[1]         |
|[-4, -1, -3]|

而且我希望输出只有正值:

|     A      |
______________
|[1, 7]      |
|[1]         |
|[]          |

【问题讨论】:

【参考方案1】:

对于 Spark 2.4 及更高版本,

from pyspark.sql.functions import expr

df.withColumn("A", expr("filter(A, x -> x > 0)")).show()

【讨论】:

以上是关于如何过滤 PySpark 中数组列中的值?的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:如何根据另一列中的匹配值从数组中的第一次出现中选择直到最后的值

PySpark - 如何根据列中的两个值从数据框中过滤出连续的行块

如何根据pyspark中的行和列条件过滤多行

如何将 pyspark 数据框列中的值与 pyspark 中的另一个数据框进行比较

如何根据 PySpark 数据框的另一列中的值修改列? F.当边缘情况

使用 pyspark 过滤数组中基于 RDD 的值