значение столбца pyspark является списком

#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      |

 ---------------- -