指定された配列内の指定された値の最初の出現位置を検索します。 いずれかの引数が null の場合は null を返します。 位置は 0 から始まるのではなく、1 から始まるインデックスです。 指定した値が配列に見つからなかった場合は、0 を返します。
構文
from pyspark.sql import functions as sf
sf.array_position(col, value)
パラメーター
| パラメーター | タイプ | Description |
|---|---|---|
col |
pyspark.sql.Column または str |
作業対象の列。 |
value |
[任意] | 検索する値または列式。 |
返品ポリシー
pyspark.sql.Column: 見つかった場合は指定された配列内の値の位置、それ以外の場合は 0。
例示
例 1: 文字列の配列内の文字列の位置を検索する
from pyspark.sql import functions as sf
df = spark.createDataFrame([(["c", "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
| 3|
+-----------------------+
例 2: 空の配列内の文字列の位置を見つける
from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, StringType, StructField, StructType
schema = StructType([StructField("data", ArrayType(StringType()), True)])
df = spark.createDataFrame([([],)], schema=schema)
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
| 0|
+-----------------------+
例 3: 整数の配列内の整数の位置を検索する
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],)], ['data'])
df.select(sf.array_position(df.data, 2)).show()
+-----------------------+
|array_position(data, 2)|
+-----------------------+
| 2|
+-----------------------+
例 4: 配列内の既存でない値の位置を見つける
from pyspark.sql import functions as sf
df = spark.createDataFrame([(["c", "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "d")).show()
+-----------------------+
|array_position(data, d)|
+-----------------------+
| 0|
+-----------------------+
例 5: null を持つ配列内の値の位置を見つける
from pyspark.sql import functions as sf
df = spark.createDataFrame([([None, "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
| 3|
+-----------------------+
例 6: 整数の配列内の列の値の位置を見つける
from pyspark.sql import functions as sf
df = spark.createDataFrame([([10, 20, 30], 20)], ['data', 'col'])
df.select(sf.array_position(df.data, df.col)).show()
+-------------------------+
|array_position(data, col)|
+-------------------------+
| 2|
+-------------------------+