我正在尝试离散化数据框中的一列。 我有一个删除算法,该算法输出一个值列表,给定的列需要在该列表处进行拆分。 列表的长度可以变化。 我正在尝试使用数据框和此列表创建一个新列。 (这类似于根据得分分配字母等级。)
这是一个示例数据框,拆分值列表和预期输出。我正在尝试根据拆分列表为 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的更好方法。