Как объединить два набора данных на основе общего ключа в пандах?
У меня есть два набора данных, которые содержат доменные имена:
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