次の方法で共有


nth_value

Window 関数: ウィンドウ フレームのoffset行 (1 からカウント) である値を返し、ウィンドウ フレームのサイズがoffset行より小さい場合にnullします。

ignoreNullsが true に設定offset場合に表示される null 以外の値が返されます。 すべての値が null の場合、null が返されます。

これは、SQL のnth_value関数と同じです。

構文

from pyspark.sql import functions as sf

sf.nth_value(col, offset, ignoreNulls=False)

パラメーター

パラメーター タイプ Description
col pyspark.sql.Column または列名 列または式の名前。
offset 整数 (int) 値として使用する行の数。
ignoreNulls bool、省略可能 使用する行の決定で N 番目の値が null をスキップする必要があることを示します。

返品ポリシー

pyspark.sql.Column: n 番目の行の値。

例示

例 1: ウィンドウ フレームの最初の値を取得する

from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
    [("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
df.show()
+---+---+
| c1| c2|
+---+---+
|  a|  1|
|  a|  2|
|  a|  3|
|  b|  8|
|  b|  2|
+---+---+
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("nth_value", sf.nth_value("c2", 1).over(w)).show()
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
|  a|  1|        1|
|  a|  2|        1|
|  a|  3|        1|
|  b|  2|        2|
|  b|  8|        2|
+---+---+---------+

例 2: ウィンドウ フレームの 2 番目の値を取得する

from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
    [("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("nth_value", sf.nth_value("c2", 2).over(w)).show()
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
|  a|  1|     NULL|
|  a|  2|        2|
|  a|  3|        2|
|  b|  2|     NULL|
|  b|  8|        8|
+---+---+---------+