pyspark列值是一个列表

nfg76nw0  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(494)

使用包含列的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
....
pkwftd7m

pkwftd7m1#

您可以使用pyspark中的切片和数组最大值函数 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      |

+----------------+-

相关问题