Поделиться через


zip_with

Объедините два заданных массива поэлементно в один массив с помощью функции. Если один массив короче, значения NULL добавляются в конце, чтобы соответствовать длине более длинного массива, прежде чем применять функцию. Поддерживает Spark Connect.

Для соответствующей функции Databricks SQL смотрите функцию zip_with.

Синтаксис

from pyspark.databricks.sql import functions as dbf

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

Параметры

Параметр Тип Description
left pyspark.sql.Column или str Имя первого столбца или выражения.
right pyspark.sql.Column или str Имя второго столбца или выражения.
f function Двоичная функция.

Возвраты

pyspark.sql.Column: массив вычисляемых значений, производных путем применения данной функции к каждой паре аргументов.

Примеры

Пример 1. Объединение двух массивов с простой функцией

from pyspark.databricks.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]|
+---------------------------+

Пример 2. Объединение массивов разной длины

from pyspark.databricks.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]|
+-----------------+