次の方法で共有


zip_with

関数を使用して、指定された 2 つの配列を要素単位で 1 つの配列にマージします。 1 つの配列が短い場合、関数を適用する前に、長い配列の長さに一致するように末尾に 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 2 番目の列または式の名前。
f function バイナリ関数。

返品ポリシー

pyspark.sql.Column: 引数の各ペアに指定された関数を適用することによって派生した計算値の配列。

例示

例 1: 2 つの配列を単純な関数とマージする

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]|
+-----------------+