Mesclagem e junção avançadas
pd.merge() com how, on, left_on/right_on, suffixes e merge_asof para junções baseadas em tempo.
Mesclagem e junção avançadas é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Combinação de DataFrames
pd.merge faz a junção de dois DataFrames com base em chaves compartilhadas, exatamente como um JOIN de SQL. Dominar as opções de how é essencial para trabalhar com dados relacionais.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Junção Interna (padrão)
how="inner" mantém apenas as chaves presentes em BOTH os quadros. Esse é o padrão.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Junção à Esquerda
how="left" mantém todas as linhas do quadro esquerdo; as colunas direitas sem correspondência se tornam NaN. É a junção mais comum em análises.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Junção Externa
how="outer" mantém todas as chaves dos dois lados, preenchendo as lacunas com NaN. Use-a para ver a união completa dos registros.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Junção com Nomes de Coluna Diferentes
Quando as colunas de chave têm nomes diferentes, use left_on e right_on em vez de on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Sufixos para Colunas Sobrepostas
Se os dois quadros compartilham o nome de uma coluna que não é chave, a biblioteca adiciona _x e _y. Substitua-os por meio de suffixes para obter mais clareza.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))A Coluna Indicadora
indicator=True adiciona uma coluna _merge que mostra a origem de cada linha: somente à esquerda, somente à direita ou em ambos. É indispensável para auditar junções.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromDiagnóstico de Problemas nas Junções
Filtrar pela coluna indicadora revela rapidamente as chaves sem correspondência, uma causa comum de dados descartados silenciosamente.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof para junções temporais
pd.merge_asof faz junções pela chave NEAREST, em vez de exigir uma correspondência exata. Ele foi desenvolvido especificamente para alinhar séries temporais, como ao associar cada negociação à cotação precedente mais recente. Ambos os quadros devem estar ordenados pela chave.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Direção de merge_asof
Por padrão, merge_asof procura BACKWARD (a chave mais recente no momento ou antes dele). Use direction="forward" ou "nearest" para alterar a regra de correspondência.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))Escolhendo a junção correta
Use interna para manter apenas as correspondências, à esquerda para enriquecer uma tabela principal, externa para obter a união completa e merge_asof para junções alinhadas no tempo (com chave aproximada).
Verificação rápida
Teste seus conhecimentos sobre junções.
Recapitulação
Kit de ferramentas para mesclagem:
how=interna / à esquerda / externa controla quais chaves permanecemonversusleft_on/right_onpara colunas de chavesuffixesdiferencia nomes sobrepostosindicator=Trueverifica a origem das linhaspd.merge_asofpara junções temporais pela chave mais próxima (ordene primeiro)
Perguntas Frequentes
A aula “Mesclagem e junção avançadas” é grátis?
Sim — o texto completo de “Mesclagem e junção avançadas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Mesclagem e junção avançadas”?
pd.merge() com how, on, left_on/right_on, suffixes e merge_asof para junções baseadas em tempo. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Mesclagem e junção avançadas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- GroupBy e agregação
- Tabelas dinâmicas e tabulação cruzada
- Mesclagem e junção avançadas
- Séries temporais no Pandas