如何将公式应用于Scala中的每个Spark DataFrame行?

时间:2018-01-09 16:30:46

标签: scala apache-spark spark-dataframe

我有以下DataFrame df

+------+----+---------+--------+--------+
|nodeId|ni  |type     |avg_ni  |std_ni  |
+------+----+---------+--------+--------+
|     1|   1|        0|     0.5|  0.7071|
|     0|   0|        0|     0.5|  0.7071|
|     2|   0|        2|     0.0|     0.0|
|     3|   0|        4|  0.6667|  1.1547|
|     4|   2|        4|  0.6667|  1.1547|
|     5|   0|        4|  0.6667|  1.1547|
+------+----+---------+--------+--------+

我想将公式(ni - avg_ni) / std_ni应用于每一行。

我试过这种方式,但它不起作用:

df.map(x => (x("ni")-x("avg_ni")/x("std_ni"))).show()

1 个答案:

答案 0 :(得分:1)

只需使用withColumnselect

df.select(($"ni" - $ "avg_ni") / $"std_ni")

可选择转换

df.select(($"ni" - $ "avg_ni") / $"std_ni").as[Double]