S funkcijo pandas DataFrame.merge() lahko zdru­žu­je­te Da­ta­Fra­mes z uporabo ključev. To vam omogoča učin­ko­vi­to zdru­že­va­nje podatkov iz različnih virov, kar vam omogoča izvajanje bolj celovitih analiz.

Kakšna je sintaksa za pandas merge()?

Metoda Python pandas DataFrame merge() sprejema različne parametre, kar raz­vi­jal­cem omogoča, da določijo, kako naj se Da­ta­Fra­mes združijo. Splošna sintaksa funkcije merge() je naslednja:

DataFrame.merge(left, 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)
python

Kateri parametri se lahko upo­ra­blja­jo s pandas merge?

Različni parametri, ki jih sprejema merge(), vam omogočajo, da določite ne le, katere pandas Da­ta­Fra­mes želite združiti, ampak tudi, kateri tip združitve želite uporabiti, ter druge po­drob­no­sti.

Parameter Opis Privzeta vrednost
levo Prvi DataFrame, ki se združi
desno Drugi DataFrame, ki ga je treba združiti
kako Vrsta operacije zdru­že­va­nja, ki jo je treba izvesti (inner, outer, left, right) inner
na Stolpci ali ravni indeksa, ki se uporabijo kot ključi; morajo biti prisotni v obeh Da­ta­Fra­mes.
left_on Stolpec(-ci) ali indeksna raven(-i) levega DataFrame-a, ki naj se uporabi(-jo) kot ključ(-i)
desno_na Stolpec(-i) ali indeksna raven(-e) desnega DataFrame-a, ki naj se uporabi(-jo) kot ključ(-i)
left_index Če je True, se indeks levega DataFrame uporabi kot ključ False
desni_indeks Če je True, se kot ključ uporabi indeks desnega DataFrame-a. False
sort Če je True, so ključi končnega DataFrame raz­vr­šče­ni le­ksi­ko­graf­sko. False
pona Pripone, ki se upo­ra­blja­jo za raz­li­ko­va­nje stolpcev z enakim imenom. ("_x", "_y")
kopija Če je False, se kopiranje izogne. True

Kako upo­ra­blja­ti pandas merge()

Spodaj je nekaj primerov, ki pomagajo po­na­zo­ri­ti, kako učin­ko­vi­to upo­ra­blja­ti pandas merge().

INNER JOIN

INNER JOIN združi dva pandas Da­ta­Fra­mes in vrne samo vrstice, kjer se ključi ujemajo v obeh Da­ta­Fra­mes. Da bi bolje razumeli, kako to deluje, ustvarimo dva Da­ta­Fra­mes:

import pandas as pd
# Sample DataFrames
df1 = pd.DataFrame({
    'Key': ['A', 'B', 'C'],
    'Value1': [1, 2, 3]
})
df2 = pd.DataFrame({
    'Key': ['B', 'C', 'D'],
    'Value2': [4, 5, 6]
})
print(df1)
print(df2)
python

Dva nastala Da­ta­Fra­mes sta videti takole:

Key    Value1
0     A            1
1     B            2
2     C            3
    Key    Value2
0     B            4
1     C            5
2     D            6

Sedaj lahko izvedemo INNER JOIN z uporabo funkcije merge():

# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)
python

Izhodni podatki kažejo, da so v DataFrame vključene samo vrstice, ki imajo ključa B in C. To je zato, ker ta dva ključa obstajata v obeh izvirnih DataFrame.

Key    Value1    Value2
0     B            2            4
1     C            3            5

OUTER JOIN

An OUTER JOIN prav tako združi dva Da­ta­Fra­mes, vendar za razliko od INNER JOIN vrne vse vrstice in izpolni manj­ka­jo­če vrednosti s NaN.

# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)
python

Spodnji DataFrame vključuje vse vrstice iz obeh Da­ta­Fra­mes. NaN se uporablja za manj­ka­jo­če vrednosti v ključu A, ki je samo v df1, in ključu D, ki je samo v df2.

Key    Value1    Value2
0     A        1.0        NaN
1     B        2.0        4.0
2     C        3.0        5.0
3     D        NaN        6.0
Note

Druge stan­dar­dne različice JOIN delujejo na podoben način.

Uporaba left_on in right_on

Včasih imata dva Da­ta­Fra­mes različna imena stolpcev za svoje ključe. V tem primeru lahko uporabite parametra left_on in right_on, da določite, katere stolpce želite uporabiti. Najprej ustvarimo dva nova Da­ta­Fra­mes:

df3 = pd.DataFrame({
    'Key': ['A', 'B', 'C'],
    'Value1': [1, 2, 3]
})
df4 = pd.DataFrame({
    'Key2': ['B', 'C', 'D'],
    'Value2': [4, 5, 6]
})
print(df3)
print(df4)
python

Oba Da­ta­Fra­mes sta videti takole:

Key    Value1
0     A            1
1     B            2
2     C            3
    Key2    Value2
0        B            4
1        C            5
2        D            6

Parametre left_on in right_on lahko uporabimo za izvedbo operacije JOIN z raz­lič­ni­mi tipkami:

# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)
python

Z izrecno uporabo left_on='Key' in right_on='Key2' se za zdru­že­va­nje uporabijo ustrezni ključni stolpci.

Key    Value1 Key2    Value2
0     B            2        B            4
1     C            3        C            5

Uporaba indeksov kot ključev

Indekse Da­ta­Fra­mes lahko uporabite tudi kot ključe, tako da parametra left_index in right_index nastavite na True. Najprej ustvarimo dva nova Da­ta­Fra­mes z indeksi:

df5 = pd.DataFrame({
    'Value1': [1, 2, 3]
}, index=['A', 'B', 'C'])
df6 = pd.DataFrame({
    'Value2': [4, 5, 6]
}, index=['B', 'C', 'D'])
print(df5)
print(df6)
python

Tukaj so po­dat­kov­ni okviri:

Value1
A        1
B        2
C        3
    Value2
B        4
C        5
D        6

Sedaj lahko izvedemo operacijo JOIN z uporabo indeksov:

# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)
python

Rezultat je JOIN, ki uporablja indekse iz Da­ta­Fra­mes:

Value1  Value2
B        2        4
C        3        5
Go to Main Menu