искра сохраняет все столбцы оригинального фрейма данных после разворота - PullRequest
0 голосов
/ 22 октября 2018

У меня есть один фрейм данных, который имеет много столбцов почти 50 плюс (как показано ниже),

+----+----+---+----+----+---+----+---+----+----+---+...
|c1  |c2  |c3 |c4  |c5  |c6  |c7 |c8 |type|clm |val |...
+----+----+---+----+----+---+----+---+----+----+---+...
|  11| 5.0|3.0| 3.0| 3.0|4.0| 3.0|3.0| t1 | a  |5   |...
+----+----+---+----+----+---+----+---+----+----+---+...
|  31| 5.0|3.0| 3.0| 3.0|4.0| 3.0|3.0| t2 | b  |6   |...
+----+----+---+----+----+---+----+---+----+----+---+...
|  11| 5.0|3.0| 3.0| 3.0|4.0| 3.0|3.0| t1 | a  |9   |...
+----+----+---+----+----+---+----+---+----+----+---+...

Я хочу преобразовать одно из значений столбца во многие столбцы, поэтому подумайте над использованием приведенного ниже кода

df.groupBy("type").pivot("clm").agg(first("val")).show() 

это преобразование значений строки в столбцы, но другие столбцы (c1 - c8) не поступают как часть результирующих данных.

так что можно использовать метод ниже, чтобы получить всеCloumns после pivot

df.groupBy ("c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "type").pivot ("clm"). agg (first ("val")). show ()

1 Ответ

0 голосов
/ 22 октября 2018

пивот обрабатывается как агрегатор, как и любой другой.

df
  .groupBy("type")
  .agg(
    pivot("clm").first("val"),
    first("c1"),
    first("c2"),
    first("c3"),
    first("c4"),
    first("c5"),
    first("c6"),
    first("c7"),
    first("c8")
  ).show()

При таком написании предполагается, что у вас есть дублированные значения для c1..c8 в одном и том же type.Если нет, то необходимо настроить .groupby(...) для точной организации ваших данных.

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