メインコンテンツまでスキップ

配列_zip

N 番目の構造体に入力配列の N 番目の値がすべて含まれる構造体の結合配列を返します。配列の 1 つが他の配列よりも短い場合、結果の構造体型の値は、欠落している要素に対して null になります。

構文

Python
from pyspark.sql import functions as sf

sf.arrays_zip(*cols)

パラメーター

パラメーター

Type

説明

cols

pyspark.sql.Column または文字列

結合する配列の列。

戻り値

pyspark.sql.Column: エントリの結合された配列。

例1 : 同じ長さの2つの配列を結合する

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

例2 : 異なる長さの配列を連結する

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

例3 : 2つ以上の配列を圧縮する

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

例4 : null値を持つ配列を圧縮する

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