這是我的資料集:
score
[0.3, 0.5]
[0.1, 0.6, 0.7]
所需資料集:
score rank
[0.3, 0.5] [1, 2]
[0.1, 0.6, 0.7] [1, 2, 3]
這是我最初的嘗試:
df_upd = df.withColumn("rank", F.array([F.lit(i) for i in range(1, F.size("score") 1)]))
我收到此錯誤:
型別錯誤:范圍()整數結束引數預期,得到列。
我想知道是否有任何簡潔的方法可以做到這一點,或者我是否必須分解df然后使用 Window 函式創建一個排名列
uj5u.com熱心網友回復:
看起來您只想創建一個從1to的序列size(score),您可以sequence為此使用函式:
from pyspark.sql import functions as F
df = spark.createDataFrame([([0.3, 0.5],), ([0.1, 0.6, 0.7],)], ["score"])
df.withColumn("rank", F.expr("sequence(1, size(score))")).show()
# --------------- ---------
#| score| rank|
# --------------- ---------
#| [0.3, 0.5]| [1, 2]|
#|[0.1, 0.6, 0.7]|[1, 2, 3]|
# --------------- ---------
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/421891.html
標籤:
