通过将输入数组列从起始索引切片到特定长度来返回新的数组列。 索引从 1 开始,可以是从数组末尾开始编制索引的负值。 长度指定生成的数组中的元素数。
Syntax
from pyspark.sql import functions as sf
sf.slice(x, start, length)
参数
| 参数 | 类型 | Description |
|---|---|---|
x |
pyspark.sql.Column 或 str |
要切片的输入数组列或列名。 |
start |
pyspark.sql.Column、str 或 int |
切片作的起始索引。 如果为负数,则从数组末尾启动索引。 |
length |
pyspark.sql.Column、str 或 int |
切片的长度,表示生成的数组中的元素数。 |
退货
pyspark.sql.Column:数组类型的新 Column 对象,其中每个值都是输入列中相应列表的切片。
例子
示例 1:切片函数的基本用法。
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],), ([4, 5],)], ['x'])
df.select(sf.slice(df.x, 2, 2)).show()
+--------------+
|slice(x, 2, 2)|
+--------------+
| [2, 3]|
| [5]|
+--------------+
示例 2:带负开始索引的切片。
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],), ([4, 5],)], ['x'])
df.select(sf.slice(df.x, -1, 1)).show()
+---------------+
|slice(x, -1, 1)|
+---------------+
| [3]|
| [5]|
+---------------+
示例 3:具有列输入的切片函数,用于开始和长度。
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3], 2, 2), ([4, 5], 1, 3)], ['x', 'start', 'length'])
df.select(sf.slice(df.x, df.start, df.length)).show()
+-----------------------+
|slice(x, start, length)|
+-----------------------+
| [2, 3]|
| [4, 5]|
+-----------------------+