Pandas DataFrame DataFrame.merge() Função

Suraj Joshi 30 janeiro 2023
  1. Sintaxe de pandas.DataFrame.merge():
  2. Códigos de exemplo: DataFrame.merge() Função para fundir dois DataFrames
  3. Códigos de exemplo: Definir o parâmetro how no método merge para fundir DataFrames utilizando várias técnicas
  4. Códigos de exemplo: fundir apenas colunas específicas utilizando DataFrame.merge() Função em Pandas
  5. Exemplo de Códigos:Utilizar Índice como as Chaves de Junção para Fundir DataFrames DataFrame.merge() Função
Pandas DataFrame DataFrame.merge() Função

Python Pandas DataFrame.merge() função funde DataFrame ou objectos de série nomeados.

Sintaxe de pandas.DataFrame.merge():

DataFrame.merge(
    right,
    how="inner",
    on=None,
    left_on=None,
    right_on=None,
    left_index=False,
    right_index=False,
    sort=False,
    suffixes="_x",
    "_y",
    copy=True,
    indicator=False,
    validate=None,
)

Parâmetros

right DataFrame ou série nomeada. Objecto a fundir com
how left, right, inner ou outer. Como realizar a operação de fusão
on rótulo ou lista. Nomes de colunas ou índices a fundir
left_on rótulo ou lista. Nomes de colunas ou índices a fundir à esquerda DataFrame.
right_on rótulo ou lista. Nomes de colunas ou índices a fundir no DataFrame direito.
left_index Booleano. Utilize o índice da esquerda DataFrame como a chave de junção(left_index=True)
right_index Booleano. Utilize o índice da direita DataFrame como a chave de junção(right_index=True)
sort Booleano. Ordenar as teclas de união alfabeticamente na saída(sort=True)
suffixes Sufixo a ser aplicado a nomes de colunas sobrepostas no lado esquerdo e direito, respectivamente
copy Booleano. Evitar cópia para copy=False.
indicator adicionar uma coluna à saída DataFrame chamada _merge com informação sobre a origem de cada linha(indicator=True) e uma coluna chamada string será adicionada à saída DataFrame(indicator=string)
validate para verificar se a fusão é de um tipo especificado.

Devolver

Retorna um DataFrame que funde os objectos dados.

Códigos de exemplo: DataFrame.merge() Função para fundir dois DataFrames

import pandas as pd

df1 = pd.DataFrame(
    {"Name": ["Suraj", "Zeppy", "Alish", "Sarah"], "Working Hours": [1, 2, 3, 5]}
)
df2 = pd.DataFrame({"Name": ["Suraj", "Zack", "Alish", "Raphel"], "Pay": [5, 6, 7, 8]})

print("1st DataFrame:")
print(df1)
print("2nd DataFrame:")
print(df2)

merged_df = df1.merge(df2)
print("Merged DataFrame:")
print(merged_df)

Resultado:

1st DataFrame:
    Name  Working Hours
0  Suraj              1
1  Zeppy              2
2  Alish              3
3  Sarah              5
2nd DataFrame:
     Name  Pay
0   Suraj    5
1    Zack    6
2   Alish    7
3  Raphel    8
Merged DataFrame:
    Name  Working Hours  Pay
0  Suraj              1    5
1  Alish              3    7

Funde df1 e df2 a um único DataFrame utilizando a técnica inner-join de SQL.

Para o método inner-join, temos de assegurar que existe pelo menos uma coluna comum a ambos os DataFrames.

Aqui, a função merge() irá juntar as linhas com os mesmos valores da coluna comum a ambos os DataFrames.

Códigos de exemplo: Definir o parâmetro how no método merge para fundir DataFrames utilizando várias técnicas

import pandas as pd

df1 = pd.DataFrame(
    {"Name": ["Suraj", "Zeppy", "Alish", "Sarah"], "Working Hours": [1, 2, 3, 5]}
)
df2 = pd.DataFrame({"Name": ["Suraj", "Zack", "Alish", "Raphel"], "Pay": [5, 6, 7, 8]})

print("1st DataFrame:")
print(df1)
print("2nd DataFrame:")
print(df2)

merged_df = df1.merge(df2, how="right")
print("Merged DataFrame:")
print(merged_df)

Resultado:

1st DataFrame:
    Name  Working Hours
0  Suraj              1
1  Zeppy              2
2  Alish              3
3  Sarah              5
2nd DataFrame:
     Name  Pay
0   Suraj    5
1    Zack    6
2   Alish    7
3  Raphel    8
Merged DataFrame:
     Name  Working Hours  Pay
0   Suraj            1.0    5
1   Alish            3.0    7
2    Zack            NaN    6
3  Raphel            NaN   8 

Funde df1 e df2 a um único DataFrame utilizando a técnica right-join de SQL.

Aqui, a função merge() devolve todas as filas da direita DataFrame. No entanto, as linhas apenas presentes no DataFrame da esquerda irão obter o valor NaN.

Da mesma forma, também podemos utilizar os valores left e outer do parâmetro how.

Códigos de exemplo: fundir apenas colunas específicas utilizando DataFrame.merge() Função em Pandas

import pandas as pd

df1 = pd.DataFrame(
    {
        "Name": ["Suraj", "Zeppy", "Alish", "Sarah"],
        "Working Hours": [1, 2, 3, 5],
        "Position": ["Salesman", "CEO", "Manager", "Sales Head"],
    }
)
df2 = pd.DataFrame(
    {
        "Name": ["Suraj", "Zack", "Alish", "Raphel"],
        "Pay": [5, 6, 7, 8],
        "Position": ["Salesman", "CEO", "Manager", "Sales Head"],
    }
)

print("1st DataFrame:")
print(df1)
print("2nd DataFrame:")
print(df2)

merged_df = df1.merge(df2, on="Name")
print("Merged DataFrame:")
print(merged_df)

Resultado:


1st DataFrame:
    Name  Working Hours    Position
0  Suraj              1    Salesman
1  Zeppy              2         CEO
2  Alish              3     Manager
3  Sarah              5  Sales Head
2nd DataFrame:
     Name  Pay    Position
0   Suraj    5    Salesman
1    Zack    6         CEO
2   Alish    7     Manager
3  Raphel    8  Sales Head
Merged DataFrame:
    Name  Working Hours Position_x  Pay Position_y
0  Suraj              1   Salesman    5   Salesman
1  Alish              3    Manager    7    Manager

Funde apenas a coluna Name de df1 e df2. Uma vez que o método de junção padrão é inner-join, apenas as linhas comuns a ambos DataFrame serão unidas. A coluna Position é comum a ambas as colunas DataFrames e, portanto, a duas colunas de posição, a saber, Position_x e Position_y.

Por defeito, os sufixos _x e _y são anexados ao nome da coluna que se sobrepõe. Podemos especificar os sufixos utilizando o parâmetro suffixes.

df1 = pd.DataFrame(
    {
        "Name": ["Suraj", "Zeppy", "Alish", "Sarah"],
        "Working Hours": [1, 2, 3, 5],
        "Position": ["Salesman", "CEO", "Manager", "Sales Head"],
    }
)
df2 = pd.DataFrame(
    {
        "Name": ["Suraj", "Zack", "Alish", "Raphel"],
        "Pay": [5, 6, 7, 8],
        "Position": ["Salesman", "CEO", "Manager", "Sales Head"],
    }
)

print("1st DataFrame:")
print(df1)
print("2nd DataFrame:")
print(df2)

merged_df = df1.merge(df2, on="Name", suffixes=("_left", "_right"))
print("Merged DataFrame:")
print(merged_df)

Resultado:

1st DataFrame:
    Name  Working Hours    Position
0  Suraj              1    Salesman
1  Zeppy              2         CEO
2  Alish              3     Manager
3  Sarah              5  Sales Head
2nd DataFrame:
     Name  Pay    Position
0   Suraj    5    Salesman
1    Zack    6         CEO
2   Alish    7     Manager
3  Raphel    8  Sales Head
Merged DataFrame:
    Name  Working Hours Position_left  Pay Position_right
0  Suraj              1      Salesman    5       Salesman
1  Alish              3       Manager    7        Manager

Exemplo de Códigos:Utilizar Índice como as Chaves de Junção para Fundir DataFrames DataFrame.merge() Função

import pandas as pd

df1 = pd.DataFrame(
    {
        "Name": ["Suraj", "Zeppy", "Alish", "Sarah"],
        "Working Hours": [1, 2, 3, 5],
        "Position": ["Salesman", "CEO", "Manager", "Sales Head"],
    }
)
df2 = pd.DataFrame(
    {
        "Name": ["Suraj", "Zack", "Alish", "Raphel"],
        "Pay": [5, 6, 7, 8],
        "Position": ["Salesman", "CEO", "Manager", "Sales Head"],
    }
)

print("1st DataFrame:")
print(df1)
print("2nd DataFrame:")
print(df2)

merged_df = df1.merge(
    df2, left_index=True, right_index=True, suffixes=("_left", "_right")
)
print("Merged DataFrame:")
print(merged_df)

Resultado:


1st DataFrame:
    Name  Working Hours    Position
0  Suraj              1    Salesman
1  Zeppy              2         CEO
2  Alish              3     Manager
3  Sarah              5  Sales Head
2nd DataFrame:
     Name  Pay    Position
0   Suraj    5    Salesman
1    Zack    6         CEO
2   Alish    7     Manager
3  Raphel    8  Sales Head
Merged DataFrame:
  Name_left  Working Hours Position_left Name_right  Pay Position_right
0     Suraj              1      Salesman      Suraj    5       Salesman
1     Zeppy              2           CEO       Zack    6            CEO
2     Alish              3       Manager      Alish    7        Manager
3     Sarah              5    Sales Head     Raphel    8     Sales Head

Funde as linhas correspondentes de dois DataFrames sem considerar as semelhanças de colunas. Se o mesmo nome de coluna aparecer em ambos os DataFrame, os sufixos são anexados aos nomes das colunas e fazem colunas diferentes após a fusão.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Pandas DataFrame