我在資料幀 rdd 上使用map函式,如下所示:
val df2=df1.select("vScaled")
val sqldf = df2.rdd
.map { row => row.getAs[DenseVector]("vScaled").values }
.map(array => Nd4j.createFromArray(Array(array)))
它有效,但我想更改df2中的值我的意思是我想將低于零且大于 1 的值替換為 0 和 1
那么如何更改地圖功能以將地圖功能替換為查找條件。
我嘗試使用 if 陳述句,但它失敗了。
我的代碼:
val sqldf = df2.rdd
.map {
row =>
if (row.getAs[DenseVector]("vScaled").values > double(1) )
{row.getAs[DenseVector]("vScaled").values = double(1).toArray}
else if (row.getAs[DenseVector]("vScaled").values< double(0) )
{ row.getAs[DenseVector]("vScaled").values= double(0).toArray }
else {row.getAs[DenseVector]("vScaled").values}
}
.map(array => Nd4j.createFromArray(Array(array)))
代碼無效
我該如何處理?
提前致謝
uj5u.com熱心網友回復:
感謝@Tim
它再次與地圖一起使用math.maxandmath.min
val sqldf = df2.rdd
.map {
row => row.getAs[DenseVector]("vScaled").values.map(x => math.max(0.0, math.min(1.0, x)))
}
.map(array => Nd4j.createFromArray(Array(array)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496954.html
