次の方法で共有


array_position

指定された配列内の指定された値の最初の出現位置を検索します。 いずれかの引数が 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|
+-------------------------+