【问题标题】:Spark dataframe calculate the row-wise minimum [duplicate]Spark数据框计算逐行最小值[重复]
【发布时间】:2019-01-29 03:57:10
【问题描述】:

我正在尝试将几列的最小值放入单独的列中。 (创建min 列)。操作非常简单,但我找不到合适的功能:
A B 最小
1 2 1
2 1 1
3 1 1
1 4 1

非常感谢您的帮助!

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    您可以在pyspark中使用least函数:

    from pyspark.sql.functions import least
    df.withColumn('min', least('A', 'B')).show()
    #+---+---+---+
    #|  A|  B|min|
    #+---+---+---+
    #|  1|  2|  1|
    #|  2|  1|  1|
    #|  3|  1|  1|
    #|  1|  4|  1|
    #+---+---+---+
    

    如果您有列名列表:

    cols = ['A', 'B']
    df.withColumn('min', least(*cols))
    

    Scala 中类似:

    import org.apache.spark.sql.functions.least
    df.withColumn("min", least($"A", $"B")).show
    +---+---+---+
    |  A|  B|min|
    +---+---+---+
    |  1|  2|  1|
    |  2|  1|  1|
    |  3|  1|  1|
    |  1|  4|  1|
    +---+---+---+
    

    如果列存储在 Seq 中:

    val cols = Seq("A", "B")    
    df.withColumn("min", least(cols.head, cols.tail: _*))
    

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      相关资源
      最近更新 更多