Función Pandas DataFrame DataFrame.merge()

Suraj Joshi 30 enero 2023
  1. La sintaxis de pandas.DataFrame.merge():
  2. Códigos de ejemplo: DataFrame.merge() Función para fusionar dos DataFrames
  3. Códigos de ejemplo: Establecer el parámetro how en el método merge para fusionar los DataFrames usando varias técnicas
  4. Códigos de ejemplo: Fusionar sólo columnas específicas usando DataFrame.merge() Función en Pandas
  5. Códigos de ejemplo: Usar el índice como las claves de unión para fusionar DataFrames DataFrame.merge() Función
Función Pandas DataFrame DataFrame.merge()

La función Python Pandas DataFrame.merge() fusiona los objetos DataFrame o los objetos Series nombrada.

La sintaxis 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 o una serie de nombres. Objeto para fusionar con
how left, right, inner o outer. Cómo realizar la operación de fusión
on etiqueta o lista. Nombres de columnas o índices para fusionar
left_on etiqueta o lista. Nombres de columnas o índices para fusionar en el DataFrame de la izquierda.
right_on etiqueta o lista. Nombres de columnas o índices para fusionar en el DataFrame derecho.
left_index Booleana. Usa el índice de la izquierda DataFrame como la clave de unión (left_index=True)
right_index Booleana. Usa el índice de la derecha DataFrame como la clave de unión (right_index=True)
sort Booleana. Ordena las claves de unión alfabéticamente en la salida(sort=True)
suffixes Sufijo que se aplicará a los nombres de las columnas superpuestas en el lado izquierdo y derecho, respectivamente
copy Booleana. Evita copiar para copy=True
indicator añadir una columna a la salida DataFrame llamada _merge con información sobre la fuente de cada fila(indicator=True) y una columna llamada string se añadirá a la salida DataFrame (indicator=string)
validate para comprobar si la fusión es de un tipo determinado.

Retorna

Devuelve un DataFrame fusionando los objetos dados.

Códigos de ejemplo: DataFrame.merge() Función para fusionar dos 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)

Producción:

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

Fusiona df1 y df2 en un solo DataFrame usando la técnica de inner-join del SQL.

Para el método inner-join, debemos asegurarnos de que hay al menos una columna común a ambos DataFrames.

Aquí, la función merge() unirá las filas que tengan los mismos valores de la columna común a ambos DataFrames.

Códigos de ejemplo: Establecer el parámetro how en el método merge para fusionar los DataFrames usando varias 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)

Producción:

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 

Fusiona df1 y df2 en un solo DataFrame usando la técnica right-join de SQL.

Aquí, la función merge() devuelve todas las filas del DataFrame de la derecha. Sin embargo, las filas sólo presentes en el DataFrame de la izquierda obtendrán el valor NaN.

De manera similar, también podemos usar los valores left y external del parámetro how.

Códigos de ejemplo: Fusionar sólo columnas específicas usando DataFrame.merge() Función en 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)

Producción:


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

Fusiona sólo la columna Name de df1 y df2. Dado que el método de unión por defecto es inner-join, sólo se unirán las filas comunes a ambos DataFrame. La columna Position es común a ambos DataFrame y por lo tanto las columnas de dos posiciones, a saber, Position_x y Position_y.

Por defecto, los sufijos _x y _y se añaden al nombre de la columna superpuesta. Podemos especificar los sufijos usando el 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)

Producción:

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

Códigos de ejemplo: Usar el índice como las claves de unión para fusionar DataFrames DataFrame.merge() Función

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)

Producción:


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

Fusiona las filas correspondientes de dos DataFrames sin considerar las similitudes de las columnas. Si el mismo nombre de columna aparece en ambos DataFrame, los sufijos se adjuntan a los nombres de las columnas y se hacen diferentes columnas después de la fusión.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Pandas DataFrame