#python #apache-spark #pyspark
#python #apache-spark #pyspark
Вопрос:
Работая с фреймом данных, который содержит столбец, значения в столбцах являются списками, как я мог бы обработать такой столбец
id | values
1 | [1,1,2,4,3,5,6]
2 | [1,2,3,5,6,7,8]
....
Для каждой строки возьмите первые три значения и получите максимум из первых трех
Ожидается как:
id | max_value
1 | 2
2 | 3
....
Ответ №1:
Вы можете использовать функции slice и array_max из pyspark sql.functions
Например, передавая array_max(slice(values, 1, 3))
в F.expr
, вы становитесь первым в списке( 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 |
---------------- -