【问题标题】:pyspark column value is a listpyspark 列值是一个列表
【发布时间】:2021-01-01 15:10:12
【问题描述】:

使用包含列的数据框,列中的值是列表,我该如何处理这样的列

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

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    您可以使用来自 pyspark sql.functionsslicearray_max 函数

    例如,通过将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      |
    
    +----------------+-
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 2018-07-03
      • 2021-06-08
      • 1970-01-01
      相关资源
      最近更新 更多