Замена значений в кадре данных с сохранением исходных значений - PullRequest
0 голосов
/ 16 мая 2018

У меня есть датафрейм, как показано ниже.

+------+----+----+
| col1 |col2|col3| 
+------+----+----+
|abc   | c  |h   |
|abc   | c  |h   |
|abc   | c  |h   |
+------+----+----+

для col2 У меня есть значение c, как показано на рисунке выше.

Теперь для всех значений c следует заменить на cat, а h, то есть значение col3, заменить на hat.

Я могу легко добиться этого с помощью следующего утверждения

dataframe.withColumn("col2", when(col("col2").equalTo("c"), "cat").otherwise(col("col2") )

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

+------+----+----+-----+----+
| col1 |col2|col3| col4|col5|
+------+----+----+-----+----+
|abc   | c  |cat |    h|hat |
|abc   | c  |cat |    h|hat |
|abc   | c  |cat |    h|hat |
+------+----+----+----+-----+

Как мне этого добиться ??? Любая помощь ....:)

Ответы [ 2 ]

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

Вам просто нужно дать новое имя столбца как

dataframe.withColumn("col4",
   when(col("col2").equalTo("c"), "cat").otherwise(col("col2") 
)
.withColumn("col5",
   when(col("col3").equalTo("c"), "cat").otherwise(col("col3") 
)

withColumn создает новый column с указанным вами именем. Если имя уже существует, оно просто заменяет старый столбец.

Выход:

+------+----+----+-----+----+
| col1 |col2|col4| col3|col5|
+------+----+----+-----+----+
|abc   | c  |cat |    h|hat |
|abc   | c  |cat |    h|hat |
|abc   | c  |cat |    h|hat |
+------+----+----+----+-----+

Если вы действительно хотите сохранить предыдущий столбец, вам нужно создать временный столбец и поменять местами имена столбцов.

Надеюсь, это поможет!

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

Если я не ошибаюсь, вам нужно указать другое имя столбца в withColumn выражении:

withColumn("newcolumnname", ....

Таким образом старый столбец будет сохранен, а новый - новым.будет создано

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