Met de pandas-functie DataFrame.merge() kunt u Da­taF­ra­mes com­bi­ne­ren met behulp van sleutels. Hierdoor kunt u gegevens uit ver­schil­len­de bronnen efficiënt com­bi­ne­ren, waardoor u uit­ge­brei­de­re analyses kunt uitvoeren.

Wat is de syntaxis voor pandas merge()?

De Python pandas DataFrame merge() kan een reeks ver­schil­len­de pa­ra­me­ters ac­cep­te­ren, waardoor ont­wik­ke­laars kunnen spe­ci­fi­ce­ren hoe Da­taF­ra­mes moeten worden ge­com­bi­neerd. De algemene syntaxis van de merge() is als volgt:

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

Welke pa­ra­me­ters kunnen worden gebruikt met pandas merge?

Met de ver­schil­len­de pa­ra­me­ters die door merge() worden ge­ac­cep­teerd, kunt u niet alleen spe­ci­fi­ce­ren welke pandas Da­taF­ra­mes moeten worden ge­com­bi­neerd, maar ook welk type join moet worden gebruikt en andere details.

Parameter Be­schrij­ving Stan­daard­waar­de
links Het eerste DataFrame dat moet worden sa­men­ge­voegd
rechts Het tweede DataFrame dat moet worden sa­men­ge­voegd
hoe Het type join-bewerking dat moet worden uit­ge­voerd (inner, outer, left, right) inner
op De kolom(men) of in­dex­ni­veau(s) die als sleutels moeten worden gebruikt; moeten in beide Da­taF­ra­mes aanwezig zijn
left_on De kolom(men) of in­dex­ni­veau(s) van het linker DataFrame die als sleutel(s) moeten worden gebruikt
right_on De kolom(men) of in­dex­ni­veau(s) van de rechter DataFrame die als sleutel(s) moeten worden gebruikt
left_index Als True, wordt de index van het linker DataFrame gebruikt als sleutel False
right_index Als True, wordt de index van het rechter DataFrame gebruikt als sleutel. False
sorteren Als True, worden de sleutels van het re­sul­te­ren­de DataFrame lexi­co­gra­fisch ge­sor­teerd. False
ach­ter­voeg­sels Ach­ter­voeg­sels die worden gebruikt om kolommen met dezelfde naam te on­der­schei­den ("_x", "_y")
kopiëren Als False, wordt kopiëren vermeden True

Hoe pandas merge() te gebruiken

Hieronder volgen enkele voor­beel­den om te il­lu­stre­ren hoe pandas merge() effectief kan worden gebruikt.

INNER JOIN

Een INNER JOIN com­bi­neert twee pandas Da­taF­ra­mes en re­tour­neert alleen de rijen waarvan de sleutels in beide Da­taF­ra­mes over­een­ko­men. Om een beter beeld te krijgen van hoe dit werkt, maken we twee Da­taF­ra­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

De twee re­sul­te­ren­de Da­taF­ra­mes zien er als volgt uit:

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

Nu kunnen we een INNER JOIN uitvoeren met behulp van de merge() -functie:

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

De uitvoer laat zien dat alleen de rijen met de sleutels B en C zijn opgenomen in het DataFrame. Dit komt omdat deze twee sleutels in beide oor­spron­ke­lij­ke Da­taF­ra­mes voorkomen.

Key    Value1    Value2
0     B            2            4
1     C            3            5

OUTER JOIN

Een OUTER JOIN voegt ook twee Da­taF­ra­mes samen, maar in te­gen­stel­ling tot INNER JOIN re­tour­neert het alle rijen en vult het ont­bre­ken­de waarden in met NaN.

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

Het on­der­staan­de DataFrame bevat alle rijen uit beide Da­taF­ra­mes. NaN wordt gebruikt voor de ont­bre­ken­de waarden in sleutel A, die alleen in df1 voorkomt, en sleutel D, die alleen in df2 voorkomt.

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
Opmerking

De andere stan­daard­va­ri­an­ten van JOIN werken op een ver­ge­lijk­ba­re manier.

Met behulp van left_on en right_on

Soms hebben twee Da­taF­ra­mes ver­schil­len­de ko­lom­na­men voor hun sleutels. In dat geval kunt u de pa­ra­me­ters left_on en right_on gebruiken om aan te geven welke kolommen u wilt gebruiken. Laten we eerst twee nieuwe Da­taF­ra­mes maken:

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

De twee Da­taF­ra­mes zien er als volgt uit:

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

We kunnen de pa­ra­me­ters left_on en right_on gebruiken om de bewerking JOIN uit te voeren met ver­schil­len­de toetsen:

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

Door expliciet gebruik te maken van left_on='Key' en right_on='Key2' worden de bij­be­ho­ren­de sleu­tel­ko­lom­men gebruikt voor het sa­men­voe­gen.

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

Indexen als sleutels gebruiken

Je kunt ook de indexen van Da­taF­ra­mes als sleutels gebruiken door de pa­ra­me­ters left_index en right_index in te stellen op True. Laten we eerst twee nieuwe Da­taF­ra­mes met indexen maken:

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

Hier zijn de Da­taF­ra­mes:

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

Nu kunnen we een JOIN -bewerking uitvoeren met behulp van de indices:

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

Het resultaat is een JOIN die ge­bruik­maakt van de indexen uit de Da­taF­ra­mes:

Value1  Value2
B        2        4
C        3        5
Ga naar hoofdmenu