scala - Scala:在数据帧的每一行中查找最大值
问题描述
对于 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))
解决方案
推荐阅读
- javascript - 正则表达式优化和最佳实践
- javascript - 如果替换有 $',replace 方法会产生意外结果
- javascript - 使用 html5 的不可见滚动条
- ios - 如何添加观察者以查找导航栏显示和隐藏
- oracle - 根据触发器中的参数显示/隐藏项目
- dart - Flutter / Dart 使用具有后代和 Navigator 的 Scoped Model
- css - 如何在angular6中应用样式
- node.js - 在 React 中如何创建输入字段并连续更改当前项目?
- python - 成本函数变成 NaN
- crystal-reports - 水晶报表-如何对详细信息部分中的抑制字段求和?