Фрейм данных Pyspark оставлен объединенным со значениями по умолчанию - PullRequest
0 голосов
/ 30 января 2020

У меня есть два кадра данных df1 и df2. Я пытаюсь присоединиться (присоединиться слева)

df1:

Name     ID       Age
AA       1        23
BB       2        49
CC       3        76
DD       4        27
EE       5        43
FF       6        34
GG       7        65

df2:

ID      Place
1       Germany
3       Holland
7       India

Final = df1.join (df2, on = ['ID'], how = 'left')

    Name     ID       Age    Place
    AA       1        23     Germany
    BB       2        49     null
    CC       3        76     Holland
    DD       4        27     null
    EE       5        43     null
    FF       6        34     null
    GG       7        65     India

Но я бы хотел заполнить столбец Place значением столбца Name, если значение place равно нулю

Ожидаемый результат:

    Name     ID       Age    Place
    AA       1        23     Germany
    BB       2        49     BB
    CC       3        76     Holland
    DD       4        27     DD
    EE       5        43     EE
    FF       6        34     FF
    GG       7        65     India

Решение, которое я могу придумать, состоит в том, что после завершения соединения я могу проверить значение Place и заменить на Name, если оно равно нулю. Пожалуйста, дайте мне знать, если есть какой-либо другой элегантный способ решения. Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Да, спасибо. После некоторого поиска удалось использовать, как показано в ссылке ниже

from pyspark.sql.functions import coalesce
df1.withColumn("Place",coalesce(df1.Place,df.Name)) 

Другая тема

0 голосов
/ 30 января 2020

Извините за путаницу. Я пытаюсь присоединиться к фрейму данных pyspark и только что отредактировал свой заголовок. Вышеупомянутое решение работает для pandas. Но как этого добиться на фреймах pyspark? Спасибо.

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