[英]Change non zero values to 1 in Scala Spark DF
我有一个 Spark Dataframe
+---+---+---+---+---+---+---+---+
|_c0|_c1|_c2|_c3|_c4|_c5|_c6|_c7|
+---+---+---+---+---+---+---+---+
| 0| 0| 0|0,3| 0| 0| 0| 0|
| 0|1,1| 0| 0|1,4| 0| 0| 0|
| 0|2,1| 0| 0| 0| 0| 0| 0|
| 0| 0| 0|3,3| 0| 0| 0| 0|
| 0| 0| 0| 0|4,4| 0|4,6| 0|
| 0| 0|5,2| 0| 0| 0| 0| 0|
|6,0| 0| 0| 0| 0|6,5|6,6| 0|
| 0| 0|7,2| 0| 0| 0| 0| 0|
+---+---+---+---+---+---+---+---+
是否可以将所有带有“,”的值更改为 1? 像这样在 Spark Scala 中?
+---+---+---+---+---+---+---+---+
|_c0|_c1|_c2|_c3|_c4|_c5|_c6|_c7|
+---+---+---+---+---+---+---+---+
| 0| 0| 0| 1| 0| 0| 0| 0|
| 0| 1| 0| 0| 1| 0| 0| 0|
| 0| 1| 0| 0| 0| 0| 0| 0|
| 0| 0| 0| 1| 0| 0| 0| 0|
| 0| 0| 0| 0| 1| 0| 1| 0|
| 0| 0| 1| 0| 0| 0| 0| 0|
| 1| 0| 0| 0| 0| 1| 1| 0|
| 0| 0| 1| 0| 0| 0| 0| 0|
+---+---+---+---+---+---+---+---+
检查下面的代码。
表达式
scala> val colExpr = df
.columns
.map(c =>
when(trim(col(c)) =!= "0", lit(1))
.otherwise(col(c))
.as(c)
)
应用表达式
scala> df.select(colExpr:_*).show(false)
最终输出
+---+---+---+---+---+---+---+---+
|_c0|_c1|_c2|_c3|_c4|_c5|_c6|_c7|
+---+---+---+---+---+---+---+---+
|0 |0 |0 |1 |0 |0 |0 |0 |
|0 |1 |0 |0 |1 |0 |0 |0 |
|0 |1 |0 |0 |0 |0 |0 |0 |
|0 |0 |0 |1 |0 |0 |0 |0 |
|0 |0 |0 |0 |1 |0 |1 |0 |
|0 |0 |1 |0 |0 |0 |0 |0 |
|1 |0 |0 |0 |0 |1 |1 |0 |
|0 |0 |1 |0 |0 |0 |0 |0 |
+---+---+---+---+---+---+---+---+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.