配列挿入
指定された配列インデックスにある特定の配列に項目を挿入します。配列のインデックスは 1 から始まり、インデックスが負の場合は末尾から始まります。配列サイズを超えるインデックスは配列に追加され、インデックスが負の場合は 'null' 要素が配列の先頭に追加されます。
構文
Python
from pyspark.sql import functions as sf
sf.array_insert(arr, pos, value)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| 配列を含む列の名前 |
|
| 挿入位置を示す数値型列の名前(インデックス 1 から始まり、負の位置は配列の最後尾から開始されます) |
| すべて | リテラル値または列式。 |
戻り値
pyspark.sql.Column: 新しく指定された値を含む値の配列
例
例1 : 特定の位置に値を挿入する
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 2, 'd')).show()
Output
+------------------------+
|array_insert(data, 2, d)|
+------------------------+
| [a, d, b, c]|
+------------------------+
例2 : 負の位置に値を挿入する
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, -2, 'd')).show()
Output
+-------------------------+
|array_insert(data, -2, d)|
+-------------------------+
| [a, b, d, c]|
+-------------------------+
例3 : 配列サイズより大きい位置に値を挿入する
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 5, 'e')).show()
Output
+------------------------+
|array_insert(data, 5, e)|
+------------------------+
| [a, b, c, NULL, e]|
+------------------------+
例4 : NULL値の挿入
Python
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()
Output
+---------------------------+
|array_insert(data, 2, NULL)|
+---------------------------+
| [a, NULL, b, c]|
+---------------------------+
例5 : NULL配列に値を挿入する
Python
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()
Output
+------------------------+
|array_insert(data, 1, 5)|
+------------------------+
| NULL|
+------------------------+