次の方法で共有


array_insert

指定した配列インデックスにある特定の配列に項目を挿入します。 配列インデックスは 1 から始まり、インデックスが負の場合は末尾から始まります。 配列サイズを超えるインデックスは配列を追加し、インデックスが負の場合は配列の先頭に 'null' 要素を付加します。

構文

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

パラメーター

パラメーター タイプ Description
arr pyspark.sql.Column または str 配列を含む列の名前
pos pyspark.sql.Column、str、または int 挿入位置を示す数値型列の名前 (インデックス 1 から始まり、負の位置は配列の背面からの開始位置)
value [任意] リテラル値または Column 式。

返品ポリシー

pyspark.sql.Column: 新しい指定された値を含む値の配列

例示

例 1: 特定の位置に値を挿入する

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 2, 'd')).show()
+------------------------+
|array_insert(data, 2, d)|
+------------------------+
|            [a, d, b, c]|
+------------------------+

例 2: 負の位置に値を挿入する

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, -2, 'd')).show()
+-------------------------+
|array_insert(data, -2, d)|
+-------------------------+
|             [a, b, d, c]|
+-------------------------+

例 3: 配列サイズより大きい位置に値を挿入する

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 5, 'e')).show()
+------------------------+
|array_insert(data, 5, e)|
+------------------------+
|      [a, b, c, NULL, e]|
+------------------------+

例 4: NULL 値の挿入

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 2, sf.lit(None))).show()
+---------------------------+
|array_insert(data, 2, NULL)|
+---------------------------+
|            [a, NULL, b, c]|
+---------------------------+

例 5: NULL 配列に値を挿入する

from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, IntegerType, StructType, StructField
schema = StructType([StructField("data", ArrayType(IntegerType()), True)])
df = spark.createDataFrame([(None,)], schema=schema)
df.select(sf.array_insert(df.data, 1, 5)).show()
+------------------------+
|array_insert(data, 1, 5)|
+------------------------+
|                    NULL|
+------------------------+