Как объединить два набора данных на основе общего ключа в пандах?

У меня есть два набора данных, которые содержат доменные имена:

df1:

varA     domains            
123     www.google.com   
456     www.ebay.com     
789     www.amazon.com   
101     www.nbc.com      
....

df2:

 urls            varB
www.cnn.com      xsd
www.ebay.com     wer
www.nbc.com      xyz
www.amazon.com   zyx
....

Мне нужно заполнить значения URL-адресов в df2 значениями varA из df1 для соответствующих доменов / URL-адресов, поэтому вывод будет выглядеть следующим образом:

 urls            varA   varB
www.ebay.com     456    wer
www.nbc.com      101    xyz
www.amazon.com   789    zyx
....

Все домены в df2, у которых нет соответствующего домена в df1, должны быть удалены.

У меня есть этот код:

target_cols = ['domains', 'urls', 'varB', 'varA']
df2.merge(df1[target_cols], on='urls', how='inner')

Код генерирует ошибку.

Как мне это исправить? Какие-нибудь альтернативные решения, которые могут работать?

1 ответ

Решение

Ошибка в том, что ключи, на которых вы объединяете, не имеют одинакового имени. Это будет работать.

pd.merge(df1, df2, left_on = 'domains', right_on = 'urls', how = 'inner').drop('domains', axis = 1)


    varA    urls            varB
0   456     www.ebay.com    wer
1   789     www.amazon.com  zyx
2   101     www.nbc.com     xyz
Другие вопросы по тегам