通过


get

给定一个基于0的索引,返回数组中该索引位置的元素。 如果索引点超出数组边界,则此函数返回 NULL。 位置不是基于 1,而是基于 0 的索引。

Syntax

from pyspark.sql import functions as sf

sf.get(col, index)

参数

参数 类型 Description
col pyspark.sql.Column 或 str 包含数组的列的名称。
index pyspark.sql.Column、str 或 int 要检查数组中的索引。

退货

pyspark.sql.Column:位于给定位置的值。

例子

示例 1:获取位于固定位置的元素

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

示例 2:获取位于数组边界之外的某个位置的元素

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

示例 3:获取另一列指定位置的元素

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

示例 4:从另一列计算的位置获取元素

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

示例 5:获取位于负位置的元素

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