使用包含列的Dataframe时,列中的值是列表,如何处理这样的列
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 ....
pkwftd7m1#
您可以使用pyspark中的切片和数组最大值函数 sql.functions 例如,通过 array_max(slice(values, 1, 3)) 至 F.expr ,您是第一个列表( slice )把马克斯带走( array_max )
sql.functions
array_max(slice(values, 1, 3))
F.expr
slice
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 | +----------------+-
1条答案
按热度按时间pkwftd7m1#
您可以使用pyspark中的切片和数组最大值函数
sql.functions
例如,通过array_max(slice(values, 1, 3))
至F.expr
,您是第一个列表(slice
)把马克斯带走(array_max
)