Funzione Pandas DataFrame DataFrame.merge()

Suraj Joshi 30 gennaio 2023
  1. Sintassi di pandas.DataFrame.merge():
  2. Codici di esempio: DataFrame.merge() Funzione per unire due DataFrame
  3. Codici di esempio: imposta il parametro how nel metodo merge per unire i DataFrame utilizzando varie tecniche
  4. Codici di esempio: unisci solo colonne specifiche utilizzando la funzione DataFrame.merge() in Pandas
  5. Codici di esempio: utilizza Index come chiavi di unione per l’unione di DataFrame Funzione DataFrame.merge()
Funzione Pandas DataFrame DataFrame.merge()

La funzione Python Pandas DataFrame.merge() unisce DataFrame o oggetti Series con nome.

Sintassi di 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,
)

Parametri

right DataFrame o serie denominata. Oggetto con cui fondersi
how left, right, inner o outer. Come eseguire l’operazione di unione
on etichetta o lista. Nomi di colonne o indici da unire
left_on etichetta o lista. Nomi di colonne o indici da unire nel DataFrame a sinistra
right_on etichetta o lista. Nomi di colonne o indici da unire a destra DataFrame
left_index Booleano. Usa l’indice da sinistra DataFrame come chiave di accesso (left_index=True)
right_index Booleano. Usa l’indice da destra DataFrame come chiave di join (right_index=True)
sort Booleano. Ordina alfabeticamente le chiavi di join nell’output (sort=True)
suffixes Suffisso da applicare ai nomi di colonna sovrapposti rispettivamente a sinistra ea destra
copy Booleano. Evita di copiare per copy=False
indicator aggiungi una colonna all’output DataFrame chiamata _merge con informazioni sull’origine di ogni riga (indicator=True) e una colonna denominata stringa verrà aggiunta all’output DataFrame (indicator=string)
validate parametro per verificare se l’unione è di un tipo specificato.

Ritorno

Restituisce un DataFrame che unisce gli oggetti dati.

Codici di esempio: DataFrame.merge() Funzione per unire due DataFrame

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)

Produzione:

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

Unisce df1 e df2 in un unico DataFrame utilizzando la tecnica inner-join di SQL.

Per il metodo inner-join, dobbiamo assicurarci che ci sia almeno una colonna comune a entrambi i DataFrame.

Qui, la funzione merge() unirà le righe aventi gli stessi valori della colonna comune a entrambi i DataFrame.

Codici di esempio: imposta il parametro how nel metodo merge per unire i DataFrame utilizzando varie tecniche

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)

Produzione:

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 

Unisce df1 e df2 in un unico DataFrame utilizzando la tecnica right-join di SQL.

Qui, la funzione merge() restituisce tutte le righe dal DataFrame di destra. Tuttavia, le righe presenti solo nel DataFrame di sinistra riceveranno il valore NaN.

Allo stesso modo, possiamo anche usare i valori left e outer del parametro how.

Codici di esempio: unisci solo colonne specifiche utilizzando la funzione DataFrame.merge() in 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)

Produzione:


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

Unisce solo la colonna Name di df1 e df2. Poiché il metodo di join predefinito è inner-join, verranno unite solo le righe comuni a entrambi i DataFrame. La colonna Posizione è comune a entrambi i DataFrames e quindi alle colonne a due posizioni, vale a dire. Position_x e Position_y.

Per impostazione predefinita, i suffissi _x e _y vengono aggiunti al nome della colonna sovrapposta. Possiamo specificare i suffissi usando il parametro 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)

Produzione:

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

Codici di esempio: utilizza Index come chiavi di unione per l’unione di DataFrame Funzione DataFrame.merge()

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)

Produzione:


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

Unisce le righe corrispondenti di due DataFrame senza considerare le somiglianze delle colonne. Se lo stesso nome di colonna appare su entrambi i DataFrame, i suffissi vengono allegati ai nomi di colonna e resi colonne diverse dopo l’unione.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame