Skip to main content

array_except

Returns a new array containing the elements present in col1 but not in col2, without duplicates.

Syntax​

Python
from pyspark.sql import functions as sf

sf.array_except(col1, col2)

Parameters​

Parameter

Type

Description

col1

pyspark.sql.Column or str

Name of column containing the first array.

col2

pyspark.sql.Column or str

Name of column containing the second array.

Parameter

Type

Description

col1

pyspark.sql.Column or str

Name of column containing the first array.

col2

pyspark.sql.Column or str

Name of column containing the second array.

Returns​

pyspark.sql.Column: A new array containing the elements present in col1 but not in col2.

Examples​

Example 1: Basic usage

Python
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["b", "a", "c"], c2=["c", "d", "a", "f"])])
df.select(sf.array_except(df.c1, df.c2)).show()
Output
+--------------------+
|array_except(c1, c2)|
+--------------------+
| [b]|
+--------------------+

Example 2: Except with no common elements

Python
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["b", "a", "c"], c2=["d", "e", "f"])])
df.select(sf.sort_array(sf.array_except(df.c1, df.c2))).show()
Output
+--------------------------------------+
|sort_array(array_except(c1, c2), true)|
+--------------------------------------+
| [a, b, c]|
+--------------------------------------+

Example 3: Except with all common elements

Python
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["a", "b", "c"], c2=["a", "b", "c"])])
df.select(sf.array_except(df.c1, df.c2)).show()
Output
+--------------------+
|array_except(c1, c2)|
+--------------------+
| []|
+--------------------+

Example 4: Except with null values

Python
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["a", "b", None], c2=["a", None, "c"])])
df.select(sf.array_except(df.c1, df.c2)).show()
Output
+--------------------+
|array_except(c1, c2)|
+--------------------+
| [b]|
+--------------------+

Example 5: Except with empty arrays

Python
from pyspark.sql import Row, functions as sf
from pyspark.sql.types import ArrayType, StringType, StructField, StructType
data = [Row(c1=[], c2=["a", "b", "c"])]
schema = StructType([
StructField("c1", ArrayType(StringType()), True),
StructField("c2", ArrayType(StringType()), True)
])
df = spark.createDataFrame(data, schema)
df.select(sf.array_except(df.c1, df.c2)).show()
Output
+--------------------+
|array_except(c1, c2)|
+--------------------+
| []|
+--------------------+