根据列表为列值分配类别

时间:2018-12-28 14:39:15

标签: scala apache-spark discretization

我正在尝试离散化数据框中的一列。 我有一个删除算法,该算法输出一个值列表,给定的列需要在该列表处进行拆分。 列表的长度可以变化。 我正在尝试使用数据框和此列表创建一个新列。 (这类似于根据得分分配字​​母等级。)

这是一个示例数据框,拆分值列表和预期输出。我正在尝试根据拆分列表为 data 列分配类别。

val df = spark.createDataFrame(Seq(
(1  ,10),
(2  ,26),
(3  ,33),
(4  ,14),
(5  ,21),
(6  ,30),
(7  ,24),
(8  ,15),
(9  ,26),
(10 ,30)
)).toDF("index", "data")

val splits = List(15, 20, 25)

这是预期的输出

+-----+----+------+
|index|data| group| 
+-----+----+------+
|    1|  10|   0  |
|    2|  26|   3  |
|    3|  33|   3  |
|    4|  14|   0  |
|    5|  21|   2  |
|    6|  30|   3  |
|    7|  24|   2  |
|    8|  16|   1  |
|    9|  26|   3  |
|   10|  18|   1  |
+-----+----+------+

我可以使用if else结构来做到这一点。但是,我敢肯定有一种使用spark / scala的更好方法。

0 个答案:

没有答案