我有一个 pyspark 数据框,我必须在其中加入两列 orderby 升序并从中提取最高值

Posted

技术标签:

【中文标题】我有一个 pyspark 数据框,我必须在其中加入两列 orderby 升序并从中提取最高值【英文标题】:I have a pyspark dataframe where I have to join two columns orderby ascending and taking only top value out of it 【发布时间】:2020-06-04 17:59:42 【问题描述】:

''' 对于 EG:

我的 SPARK 数据框或表

       A       B
  |--------|----------|
  |    B   |     c    |
  |    K   |     G    |
  |    g   |     A    |
  | None   |   None   |
  | -------|----------|

预期结果

       AB
  |--------|
  |    B   | 
  |    G   |
  |    A   |
  | None   | 
  |--------|

如何将两者排序为数组并取第一个值。 (我很新)

提前致谢

'''

【问题讨论】:

【参考方案1】:

直接比较字符即可

import org.apache.spark.sql.functions._

object CompareCol 

  def main(args: Array[String]): Unit = 

    val spark = Constant.getSparkSess

    import spark.implicits._
    val df = List(("B", "c"), ("K", "G"), ("g", "A"), (null, null)).toDF("A", "B")


    df
      .withColumn("arrayCol", array_min(array(col("A"), col("B"))))
      .show()
  



【讨论】:

这是一个很好的答案,但是当我与 null 或 none 进行比较时,它给了我 null EG : c | null 那么结果是 null 必须是 c 更新了空检查的条件 如果您不介意,请告诉我如果超过 2 列,我们如何添加,我的意思是三或四...我们可以只比较还是有其他方法 为多列添加了代码。你最终驱使我找到更好的解决方案。 @Hemanthsai

以上是关于我有一个 pyspark 数据框,我必须在其中加入两列 orderby 升序并从中提取最高值的主要内容,如果未能解决你的问题,请参考以下文章

pyspark 将最小值添加回数据框

加入两个数据框pyspark

加入两个分区数据框pyspark

从列表中创建一个 pyspark 数据框列,其中列表的长度与数据框的行数相同

使用 pyspark 数据框中的复制名称加入后使用左表中的所有列进行分组

如何在 pyspark 中加入带有熊猫数据框的配置单元表?