Искра: условно заменить значение col1 на col2 - PullRequest
0 голосов
/ 31 октября 2018

У меня есть фрейм данных, к которому я присоединился с устаревшими данными и обновленными данными:

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

Фрейм данных:

+----------------------------------------+-------+--------+-----------+------------+
|id                                      |make   |model   |make_update|model_update|
+----------------------------------------+-------+--------+-----------+------------+
|1234                                    |Apple  |iphone  |null       |iphone x    |
|4567                                    |Apple  |iphone  |null       |iphone 8    |
|7890                                    |Apple  |iphone  |null       |null        |
+----------------------------------------+-------+--------+-----------+------------+

Идеальный результат:

+----------------------------------------+-------+---------+
|id                                      |make   |model    |
+----------------------------------------+-------+---------|
|1234                                    |Apple  |iphone x |
|4567                                    |Apple  |iphone 8 |
|7890                                    |Apple  |iphone   |
+----------------------------------------+-------+---------+

Ответы [ 2 ]

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

Вот быстрое решение:

val df2 = df1.withColumn("New_Model", when($"model_update".isNull ,Model)
                                  .otherwise(model_update))

Где df1 - ваш исходный фрейм данных.

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

Использование объединения.

DF = df.withColumn ( "модель", коалесценции (COL ( "model_update"), Col ( "модель"))) * * 1003

...