Pular para o conteúdo principal

arrays_zip

Retorna um array mesclado de structs em que a N-ésima struct contém todos os N-ésimos valores dos arrays de entrada. Se um dos arrays for mais curto que os outros, o valor do tipo struct resultante será nulo para os elementos ausentes.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.arrays_zip(*cols)

Parâmetros

Parâmetro

Tipo

Descrição

cols

pyspark.sql.Column ou str

Colunas de matrizes a serem mescladas.

Devoluções

pyspark.sql.Column: mesclar matriz de entradas.

Exemplos

Exemplo 1 : Unindo duas matrizes de mesmo comprimento

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3], ['a', 'b', 'c'])], ['nums', 'letters'])
df.select(sf.arrays_zip(df.nums, df.letters)).show(truncate=False)
Output
+-------------------------+
|arrays_zip(nums, letters)|
+-------------------------+
|[{1, a}, {2, b}, {3, c}] |
+-------------------------+

Exemplo 2 : Combinando arrays de comprimentos diferentes

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2], ['a', 'b', 'c'])], ['nums', 'letters'])
df.select(sf.arrays_zip(df.nums, df.letters)).show(truncate=False)
Output
+---------------------------+
|arrays_zip(nums, letters) |
+---------------------------+
|[{1, a}, {2, b}, {NULL, c}]|
+---------------------------+

Exemplo 3 : Combinando mais de duas matrizes

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame(
[([1, 2], ['a', 'b'], [True, False])], ['nums', 'letters', 'bools'])
df.select(sf.arrays_zip(df.nums, df.letters, df.bools)).show(truncate=False)
Output
+--------------------------------+
|arrays_zip(nums, letters, bools)|
+--------------------------------+
|[{1, a, true}, {2, b, false}] |
+--------------------------------+

Exemplo 4 : Combinando arrays com valores nulos

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, None], ['a', None, 'c'])], ['nums', 'letters'])
df.select(sf.arrays_zip(df.nums, df.letters)).show(truncate=False)
Output
+------------------------------+
|arrays_zip(nums, letters) |
+------------------------------+
|[{1, a}, {2, NULL}, {NULL, c}]|
+------------------------------+