Oi! Estou precisando comparar dois dataframes e retirar, do df_1, os itens que ele tenha em comum com o meu df_2. Sabem me indicar alguma função de pandas para me ajudar? Obrigada!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Oi! Estou precisando comparar dois dataframes e retirar, do df_1, os itens que ele tenha em comum com o meu df_2. Sabem me indicar alguma função de pandas para me ajudar? Obrigada!
Olá Clara, tudo bem com você?
Peço desculpas pela demora em obter um retorno.
Para comparar dois DataFrames e remover os itens que estão em comum com o segundo DataFrame do primeiro, você pode usar a função merge em conjunto com o tipo de junção, neste caso, será à esquerda, o que significa que todas as linhas do df_1 serão mantidas, e também as linhas do df_2 que tinham correspondência com o df_1.
Abaixo, um exemplo em código:
import pandas as pd
df_1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8]})
df_2 = pd.DataFrame({'A': [2, 4],
'B': [6, 8]})
# Realiza uma mesclagem (merge) dos DataFrames usando a função merge
result = df_1.merge(df_2, on=['A', 'B'], how='left', indicator=True).query('_merge == "left_only"').drop('_merge', axis=1)
# O DataFrame "result" agora contém os itens de df_1 que não estão em df_2
result
Resultado:

No código acima, usando a função merge para combinar os DataFrames df_1 e df_2 com base nas colunas "A" e "B". A opção how='left' indica que queremos manter todas as linhas do df_1 e apenas as linhas que têm correspondência no df_2. O parâmetro indicator=True adiciona uma coluna especial _merge ao DataFrame resultante, que identifica de qual DataFrame original cada linha veio:

Já a função query é usada para selecionar apenas as linhas em que _merge é igual a "left_only", ou seja, as linhas que estão presentes apenas no df_1. O drop é utilizado para remover a coluna _merge do resultado, deixando apenas as linhas que você deseja no DataFrame final, ou seja, que contém os itens do df_1 que não estão em df_2.
Caso queira se aprofundar na função merge, recomendo a leitura deste artigo que está em inglês, mas, ao utilizar o recurso de tradução do próprio navegador, é possível compreender. Todavia, vale ressaltar que como é um assunto externo ao curso e que não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.
Espero ter ajudado.
Abraços e bons estudos!