Aller au contenu principal

zip_with

Merge deux tableaux donnés, élément par élément, en un seul tableau à l'aide d'une fonction. Si un tableau est plus court, des valeurs nulles sont ajoutées à la fin pour correspondre à la longueur du tableau le plus long, avant d'appliquer la fonction. Prend en charge Spark Connect.

Pour la fonction Databricks SQL correspondante, consultez la fonctionzip_with.

Syntaxe

Python
from pyspark.sql import functions as dbf

dbf.zip_with(left=<left>, right=<right>, f=<f>)

parameter

parameter

Type

Description

left

pyspark.sql.Column OU str

Nom de la première colonne ou expression.

right

pyspark.sql.Column OU str

Nom de la deuxième colonne ou expression.

f

function

Une fonction binaire.

parameter

Type

Description

left

pyspark.sql.Column OU str

Nom de la première colonne ou expression.

right

pyspark.sql.Column OU str

Nom de la deuxième colonne ou expression.

f

function

Une fonction binaire.

Renvoie

pyspark.sql.Column: tableau de valeurs calculées dérivées en appliquant une fonction donnée à chaque paire d'arguments.

Exemples

Exemple 1 : Fusion de deux tableaux avec une fonction simple

Python
from pyspark.sql import functions as dbf
df = spark.createDataFrame([(1, [1, 3, 5, 8], [0, 2, 4, 6])], ("id", "xs", "ys"))
df.select(dbf.zip_with("xs", "ys", lambda x, y: x ** y).alias("powers")).show(truncate=False)
Output
+---------------------------+
|powers |
+---------------------------+
|[1.0, 9.0, 625.0, 262144.0]|
+---------------------------+

Exemple 2 : Fusion de tableaux de différentes longueurs

Python
from pyspark.sql import functions as dbf
df = spark.createDataFrame([(1, ["foo", "bar"], [1, 2, 3])], ("id", "xs", "ys"))
df.select(dbf.zip_with("xs", "ys", lambda x, y: dbf.concat_ws("_", x, y)).alias("xs_ys")).show()
Output
+-----------------+
| xs_ys|
+-----------------+
|[foo_1, bar_2, 3]|
+-----------------+