我有一个 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 数据框列,其中列表的长度与数据框的行数相同