我试图找出DataFrame中[row]的最低值。我怎样才能做到这一点?我的数据集是这样的:
aaaa |-32566.335700000003| 27668.7725| 20183.4786|
bbbb | -3.924099999999997| 5.802000000000006| 4.988000000000004|
cccc | 951546.8948000005| -686025.1569999934| -62493.96830000022|
xxxx |-26563.328700000005| 52490.610100000005| -5555.277|
研究:我要做的是转置上面的内容然后进行排序并选择上面的行作为列。请使用已经存在的Spark数据集函数建议任何替代方法。
以上只是一个样本数据集,实际列数远远超过此值,以获得行中的最低值。
答案 0 :(得分:0)
您可以通过将一行中的所有数字列作为列表,然后在此列表中查找最小值来执行此操作:
val df = sc.parallelize(Seq(("a",1.0,2.0,3.0),("b",-1.0,-2.0,-3.0),("c",-1.0,0.0,1.0))).toDF("id","v1","v2","v3")
df.show
val numericCols = List("v1", "v2", "v3") // you can get these from the df.schema if you need generic approach
val dfMin = df.map(r => (r.getAs[String]("id"), numericCols.map(column => r.getAs[Double](column)).min)).toDF("id", "minValue")
dfMin.show