Я работаю над фреймом данных, который выглядит следующим образом -
val df = Seq(
(0.0 ),
(0.0 ),
(0.0 ),
(0.317),
(0.0 ),
(0.0 ),
(-0.78),
(-0.37),
(0.0 ),
(0.0 ),
(0.0 ),
(0.0 )
).toDF("importance")
Теперь у меня есть еще немного кода для получения столбцов labels
и features
в виде массивов, как показано ниже -
val labels = Array(0,1,2)
import org.apache.spark.sql.functions.typedLit
val df1 = df.withColumn("labels", typedLit(labels))
val featureNames = Array("a","b","c","d")
val df2 = df1.withColumn("features", typedLit(featureNames))
scala> df2.show(false)
+----------+---------+------------+
|importance|labels |features |
+----------+---------+------------+
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.317 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|-0.78 |[0, 1, 2]|[a, b, c, d]|
|-0.37 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
|0.0 |[0, 1, 2]|[a, b, c, d]|
+----------+---------+------------+
Теперь, используя этот фрейм данных, я хочу выровнять каждый столбец значения важности с каждым элементом массивов labels
и features
. Таким образом, вывод должен выглядеть примерно так -
label feature name importance
0 a 0
0 b 0
0 c 0
0 d 0.3176
1 a 0
1 b 0
1 c -0.78
1 d -0.37
2 a 0
2 b 0
2 c 0
2 d 0
Итак, первая запись имеет label=0
и feature=a
и имеет importance = 0
.