PySpark - как обновить Dataframe с помощью объединения? - PullRequest
0 голосов
/ 14 октября 2019

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

id,value
1,11
2,22
3,33

И еще один фрейм данных b:

id,value
1,123
3,345

Я хочу обновить фрейм данных a со всеми соответствующими значениями из b (на основе столбца id').

Конечный фрейм данных' c 'будет выглядеть следующим образом:

id,value
1,123
2,22
3,345

Как этого добиться, используя объединения данных (или другой подход)?

Попытка:

a.join(b, a.id == b.id, "inner").drop(a.value)

Дает (не желаемый вывод):

+---+---+-----+
| id| id|value|
+---+---+-----+
|  1|  1|  123|
|  3|  3|  345|
+---+---+-----+

Спасибо.

1 Ответ

1 голос
/ 14 октября 2019

Я не думаю, что есть обновление функциональности. Но это должно работать:

import pyspark.sql.functions as F

df1.join(df2, df1.id == df2.id, "left_outer") \
   .select(df1.id, df2.id, F.when(df2.value.isNull(), df1.value).otherwise(df2.value).alias("value")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...