Tallying в Scala DataFrame Array - PullRequest
       10

Tallying в Scala DataFrame Array

0 голосов
/ 21 февраля 2019

У меня есть 2 столбца свечей Scala DataFrame.Первая имеет одну переменную, вторая представляет собой массив букв.То, что я пытаюсь сделать, это найти способ кодирования (без использования цикла for) переменных в массиве.

Например, это то, что у меня есть (извините, это не так аккуратно, это мой первый стековый пост).У вас 5 компьютеров, каждый человек представлен буквой.Я хочу найти способ узнать, сколько компьютеров использовал человек (A, B, C, D, E).

+-----------------+--------------+
|       id        |   [person]   |
+-----------------+--------------+
|  Computer 1     |   [A,B,C,D]  |
|  Computer 2     |    [A,B]     |
|  Computer 3     |   [A,B,E]    |
|  Computer 4     |   [A,C,D]    |
|  Computer 5     |  [A,B,C,D,E] |
+-----------------+--------------+

То, что я хотел бы закодировать или спросить, есть ли у кого-нибудь решение, было бы примерно так:

+---------+-----------+
| Person  |  [Count]  |
+---------+-----------+
|    A    |     5     |
|    B    |     4     |
|    C    |     3     |
|    D    |     3     |
|    E    |     2     |
+---------+-----------+

Каким-то образом подсчитать людей, которые находятся в массивах в пределах кадра данных.

1 Ответ

0 голосов
/ 21 февраля 2019

Есть функция с именем explode, которая расширяет массивы в одну строку для каждого элемента:

| id | person

+-----------------+------------------------+

| Computer 1| A |
| Computer 1| B |
| Computer 1| C |
| Computer 1| D |

....
+---+----+----+----+----+

Затем вы можете группировать по человеку и считать.Что-то вроде:

val df2 = df.select(explode($"person").as("person"))
val result = df2.groupBy($"person").count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...