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
from pyspark.sql import functions as dbf
dbf.zip_with(left=<left>, right=<right>, f=<f>)
parameter
parameter | Type | Description |
|---|---|---|
|
| Nom de la première colonne ou expression. |
|
| Nom de la deuxième colonne ou expression. |
|
| 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
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)
+---------------------------+
|powers |
+---------------------------+
|[1.0, 9.0, 625.0, 262144.0]|
+---------------------------+
Exemple 2 : Fusion de tableaux de différentes longueurs
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()
+-----------------+
| xs_ys|
+-----------------+
|[foo_1, bar_2, 3]|
+-----------------+