Поделиться через


slice

Возвращает новый столбец массива путем среза столбца входного массива из начального индекса в определенную длину. Индексы начинаются с 1 и могут быть отрицательными для индексирования с конца массива. Длина указывает количество элементов в результирующем массиве.

Синтаксис

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