Переименование имени столбца данных - PullRequest
1 голос
/ 11 мая 2019

У меня есть фрейм данных df_one, df_two, как показано ниже:

df_one.show()

-------------
|Column_Name|
-------------
|NAME       |
|ID         | 
|COUNTRY    |
-------------

df_two.show()

-------------   
|_c0|_c1|_c2|
-------------
|AAA|001|US |
|BBB|002|UK |
|CCC|003|IN |
|DDD|004|FR |
-------------

Я пытаюсь переименовать столбец фрейма данных df_two, как показано ниже:

------------- ----  
|NAME|ID |COUNTRY|
------------------
|AAA |001| US    |
|BBB |002| UK    |
|CCC |003| IN    |
|DDD |004| FR    |
------------------

, пока я создал seqи получить приведенный выше результат

val newColumn = Seq("NAME", "ID", "COUNTRY")
val df = df_two.toDF(newColumn:_*)

Но теперь мне нужно прочитать столбец (Column_Name) из df_one и переименовать имя столбца в dataframe df_two соответственно.

Я также пытался прочитать значение столбца из df_one, но он возвращает Seq [Any], и мне нужен Seq [String].

направьте меня с некоторым кодом здесь ..

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Вот решение в Scala.

Поскольку df_one - это небольшой набор данных (даже если общее количество столбцов в тысячах), можно collect DataFrame как Array. Теперь collect -ing DataFrame приведет к Array из Row s:

df_one.collect
// res1: Array[org.apache.spark.sql.Row] = Array([NAME], [ID], [COUNTRY])

Чтобы развернуть Row с (одного String), просто примените метод Row getString:

df_one.collect.map(_.getString(0))
// res2: Array[String] = Array(NAME, ID, COUNTRY)

В целом:

val df_one = Seq(
  "NAME", "ID", "COUNTRY"
).toDF("Column_Name")

val df_two = Seq(
  ("AAA", "001", "US"),
  ("BBB", "002", "UK"),
  ("CCC", "003", "IN"),
  ("DDD", "004", "FR")
).toDF("_c0", "_c1", "_c2")

val colNames = df_one.collect.map(_.getString(0))

df_two.toDF(colNames: _*).show
// +----+---+-------+
// |NAME| ID|COUNTRY|
// +----+---+-------+
// | AAA|001|     US|
// | BBB|002|     UK|
// | CCC|003|     IN|
// | DDD|004|     FR|
// +----+---+-------+
0 голосов
/ 11 мая 2019

Попробуйте:

df_two.columns = df_one['Column_Name']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...