pyspark присоединиться к большему количеству условий - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь соединить два фрейма данных с «left» с условиями с «item»

Если df2 не имеет «эквивалента_элемента», то я хочу использовать сам df1 «item». Если df2 «эквивалентный_элемент» равен нулю (например, киви), то эквивалентный элемент должен быть нулевым, и позже я могу отбросить эту строку.

df1:

name     item
jack     rice
hari     banana
mala     apples
kin      kiwi
Mike     salt
fall     sugar
yedy     pasta
vall     fruits   

df2:

item     equivalent_item
rice      basmathi
banana    delmonte 
apples    fuji apple
kiwi 
pasta     barello

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

name     items        equivalent_item
jack     rice         basmathi
hari     banana       delmonte
mala     apples       fuji apple
kin      kiwi
Mike     salt         salt
fall     sugar        sugar
yedy     pasta        barello
vall     fruits       fruits  

Я должен был сделать, как показано ниже:

def equivalent_name(name):
    elif name == 'rice':
        return 'basmathi'
    elif name == 'banana':
        return 'delmonte'
    elif name == 'apples':
        return 'fuji apple'
    elif name == 'apples':
        return 'fuji apple'
    elif name == 'pasta':
        return 'barello'
    else
        return name

df1['name'] = df1['name'].apply(equivalent_name)

1 Ответ

1 голос
/ 21 февраля 2020

Объединение влево с помощью df.join ()

df1.join(df2, ["item"], "left")

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

df1.join(df2, df1["item_1"]=df2["item_2"], "left")

Это приведет к созданию кадра данных с в столбцах item_1 и item_2 вы можете удалить столбец, который не требуется.

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