Scala:在数据框的每一行中找到最大值

时间:2019-03-26 16:48:26

标签: scala dataframe max row

对于DataFrame的每一行,我想提取最大值并将其放在新列中。 下面的示例代码为我提供了每个最大值的DataFrame('dfmax'):

  val donuts = Seq((2.0, 1.50, 3.5), (4.2, 22.3, 10.8), (33.6, 2.50, 7.3))
  val df = sparkSession
    .createDataFrame(donuts)
    .toDF("col1", "col2", "col3")
  df.show()

  import sparkSession.implicits._
  val dfmax = df.map(r => r.getValuesMap[Double](df.schema.fieldNames).map(r => r._2).max)
  dfmax.show

这给了我df:

+----+----+----+
|col1|col2|col3|
+----+----+----+
| 2.0| 1.5| 3.5|
| 4.2|22.3|10.8|
|33.6| 2.5| 7.3|
+----+----+----+

和dfmax:

+-----+
|value|
+-----+
|  3.5|
| 22.3|
| 33.6|
+-----+

我希望将这两个框架合并在一张桌子中,最好使用.withColumn或类似的样式(我无法使用):

def maxValue(data: DataFrame): DataFrame = {
   val dfmax = df.map(r => r.getValuesMap[Double](df.schema.fieldNames).map(r => r._2).max)
   dfmax
}
val udfMaxValue = udf(maxValue _)
df.withColumn("max", udfMaxValue(df))

0 个答案:

没有答案