将一个元素插入到指定索引处的给定数组中。 数组索引从 1 开始,如果索引为负数,则从末尾开始。 数组大小上方的索引会追加数组,或者如果索引为负,则为数组前面加上“null”元素。
Syntax
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|
+------------------------+