Olá Luiz, tudo bem? Espero que sim!
Desculpe pela demora em retornar.
Para realizarmos uma correspondência entre as series Location e Loc_VI, podemos utilizar o método merge() da biblioteca pandas. Basta acessarmos o método merge() através do primeiro dataframe, passando como primeiro argumento da função o segundo dataframe. Além disso, utilizaremos os parâmetros left_on e right_on para informarmos quaisos nomes das colunas que serão comparadas para que a correspondência seja feita. As colunas do seu exemplo serão 'Location' para o parâmetro left_on e 'Loc_VI' para o parâmetro right_on. Caso o nome das colunas fosse o mesmo, bastaria utilizar o argumento on, passando o nome em comum dos dois DataFrames. Por fim, precisamos utilizar o parâmetro how, que irá designar o tipo de correspondência entre os DataFrames. O tipo inner irá unir os DataFrames pegando somente as informações em comum dos dois DataFrames.
Para saber mais sobre o método merge(), confira a documentação da biblioteca pandas.
Para que fique mais claro, vou utilizar um exemplo simples da correspondência de dois DataFrames. Primeiramente, vamos criar o primeiro DataFrame com o seguinte código:
id = ['A001', 'A002', 'A003', 'A004', 'A005', 'A006', 'A007', 'A010']
localizacao = ['MG', 'SP', 'RJ', 'CE', 'RS', 'PE', 'PR', 'MS', 'SC', 'BA']
fazendas = ['Samambaia', 'Mato Grosso', 'Aconchego', 'Saci', 'Capão Grande', 'Santa Fé', 'Diná', 'Reunidos BH', 'Barreiro', 'Amaral']
producao_de_gado = [1500, 693, 12434, 122, 259, 80, 301, 3284, 77, 10]
dados_1 = pd.DataFrame(list(zip(id,localizacao, fazendas, producao_de_gado)), columns = ['ID','Localização', 'Nome Fazenda', 'Qtd Gado'])
dados_1
O código acima trará o seguinte resultado:
| ID | Localização | Nome Fazenda | Qtd Gado |
---|
0 | A001 | MG | Samambaia | 1500 |
1 | A002 | SP | Mato Grosso | 693 |
2 | A003 | RJ | Aconchego | 12434 |
3 | A004 | CE | Saci | 122 |
4 | A005 | RS | Capão Grande | 259 |
5 | A006 | PE | Santa Fé | 80 |
6 | A007 | PR | Diná | 301 |
7 | A010 | MS | Reunidos BH | 3284 |
Agora, vamos criar o segundo DataFrame, com o código a seguir:
id = ['A013', 'A014', 'A015', 'A004', 'A005', 'A006', 'A017', 'A020']
produtor = ['João', 'Millena', 'Afonso', 'Joana', 'Sthefanie', 'Danielle', 'Pedro', 'José', 'Lucas', 'Ferreira']
hectares_de_terra = [10, 500, 352, 10, 450, 222, 50, 30, 5, 250]
dados_2 = pd.DataFrame(list(zip(id,produtor, hectares_de_terra)), columns = ['ID_2','Nome Produtor', 'Hectares de Terra'])
dados_2
O código acima trará o seguinte resultado:
| ID_2 | Nome Produtor | Hectares de Terra |
---|
0 | A013 | João | 10 |
1 | A014 | Millena | 500 |
2 | A015 | Afonso | 352 |
3 | A004 | Joana | 10 |
4 | A005 | Sthefanie | 450 |
5 | A006 | Danielle | 222 |
6 | A017 | Pedro | 50 |
7 | A020 | José | 30 |
Para realizarmos a junção dos DataFrames através dos IDs, precisamos usar o método merge(), salvando o resultado em um terceiro DataFrame, nomeado df_inner:
df_inner = dados_1.merge(dados_2, left_on='ID', right_on='ID_2', how ='inner')
df_inner
O código acima trará o seguinte resultado:
| ID | Localização | Nome Fazenda | Qtd Gado | ID_2 | Nome Produtor | Hectares de Terra |
---|
0 | A004 | CE | Saci | 122 | A004 | Joana | 10 |
1 | A005 | RS | Capão Grande | 259 | A005 | Sthefanie | 450 |
2 | A006 | PE | Santa Fé | 80 | A006 | Danielle | 222 |
Repare que foi realizado a junção através das colunas ID e ID_2, mostrando apenas os IDs que estão em ambos os conjuntos de dados ao mesmo tempo. Podemos selecionar somente as colunas de interesse através de uma seleção do pandas, com o código:
df_inner[['ID', 'Nome Fazenda', 'Qtd Gado', 'Nome Produtor']]
df_inner
Que apresentará o resultado:
| ID | Nome Fazenda | Qtd Gado | Nome Produtor |
---|
0 | A004 | Saci | 122 | Joana |
1 | A005 | Capão Grande | 259 | Sthefanie |
2 | A006 | Santa Fé | 80 | Danielle |
Você pode aplicar o método ao seu problema, fazendo as devidas adaptações.
Espero que tenha tirado sua dúvida.
Estou à disposição. Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!