使用包含列的數(shù)據(jù)框,列中的值是列表,我如何處理這樣的列id | values1 | [1,1,2,4,3,5,6]2 | [1,2,3,5,6,7,8]....對(duì)于每一行,取前三個(gè)值并獲取前三個(gè)值中的最大值預(yù)計(jì)為:id | max_value1 | 22 | 3....
1 回答

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用pyspark 中的slice和array_max函數(shù)sql.functions
例如,通過傳遞array_max(slice(values, 1, 3))
to?F.expr
,您首先是 list(?slice
) 并取 max (?array_max
)
import pyspark.sql.functions as F
df
.withColumn("max_value", F.expr("array_max(slice(values, 1, 3))"))
.show(truncate=False)
+----------------+-
|id |max_value|
+----------------+-
|1? |2? ? ? |
|2? |3? ? ? |
+----------------+-
添加回答
舉報(bào)
0/150
提交
取消