Как добавить новый столбец в фрейм данных Spark для каждой существующей строки? - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь создать матрицу сравнения с использованием фрейма данных Spark, и я начинаю с создания фрейма данных из одного столбца с одной строкой на значение:

val df = List(1, 2, 3, 4, 5).toDF

Отсюда мне нужно сделать следующее:создайте новый столбец для каждой строки и вставьте (пока) случайное число в каждый пробел, например:

  Item   1   2   3   4   5  
 ------ --- --- --- --- --- 
     1   0   7   3   6   2  
     2   1   0   4   3   1  
     3   8   6   0   4   4  
     4   8   8   1   0   9  
     5   9   5   3   6   0  

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 13 марта 2019

Учитывая транспонирование входного DataFrame с именем df с использованием функции .pivot(), как показано ниже:

val output = df.groupBy("item").pivot("item").agg((rand()*100).cast(DataTypes.IntegerType))

Это создаст новый DataFrame со случайным целочисленным значением, соответствующим значению строки (null иначе).

+----+----+----+----+----+----+
|item|1   |2   |3   |4   |5   |
+----+----+----+----+----+----+
|1   |9   |null|null|null|null|
|3   |null|null|2   |null|null|
|5   |null|null|null|null|6   |
|4   |null|null|null|26  |null|
|2   |null|33  |null|null|null|
+----+----+----+----+----+----+

Если вам не нужны значения null, вы можете применить UDF позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...