将scala spark df中的非零值更改为1

ubbxdtey  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(384)

我有一个spark数据框

+---+---+---+---+---+---+---+---+
|_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?像这样在斯卡拉?

+---+---+---+---+---+---+---+---+
|_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|
+---+---+---+---+---+---+---+---+
mkh04yzy

mkh04yzy1#

检查以下代码。
表达

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  |
+---+---+---+---+---+---+---+---+

相关问题