繁体   English   中英

将 Scala Spark DF 中的非零值更改为 1

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM