формируя новые столбцы в виде одного горячего вектора - PullRequest
0 голосов
/ 21 мая 2018

У меня есть фрейм данных:

customer | Department
----------------------
A        |   Food
B        |   Home
A        |   Office
C        |   Home
A        |   Home
B        |   Office

И столбцы Customer и Department имеют тип String

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

 customer | Food | Home | Office
-----------------------------------
    A        1     1      1
    B        0     1      1
    C        0     1      0

Здесь столбцы Food, Home, Office имеют целочисленный тип, а customer - String.

1 Ответ

0 голосов
/ 21 мая 2018

Вам просто нужно group данные category и pivot с агрегированным значением

val df = Seq(
  ("A", "Food"),
  ("B", "Home"),  
  ("A", "Office"),
  ("C", "Home"),
  ("A", "Home"),
  ("B", "Office")
).toDF("customer", "department")


df.groupBy("customer").pivot("department").agg(count("department"))
    .na.fill(0)

Выход:

+--------+----+----+------+
|customer|Food|Home|Office|
+--------+----+----+------+
|B       |0   |1   |1     |
|C       |0   |1   |0     |
|A       |1   |1   |1     |
+--------+----+----+------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...