使用包含列的数据框,列中的值是列表,我如何处理这样的列id | values1 | [1,1,2,4,3,5,6]2 | [1,2,3,5,6,7,8]....对于每一行,取前三个值并获取前三个值中的最大值预计为:id | max_value1 | 22 | 3....
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
您可以使用pyspark 中的slice和array_max函数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 |
+----------------+-
添加回答
举报
0/150
提交
取消