Met de pandas-functie DataFrame.merge() kunt u DataFrames combineren met behulp van sleutels. Hierdoor kunt u gegevens uit verschillende bronnen efficiënt combineren, waardoor u uitgebreidere analyses kunt uitvoeren.

Wat is de syntaxis voor pandas merge()?

De Python pandas DataFrame merge() -methode kan een reeks verschillende parameters accepteren, waardoor ontwikkelaars kunnen specificeren hoe DataFrames moeten worden gecombineerd. 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 parameters kunnen worden gebruikt met pandas merge?

Met de verschillende parameters die door merge() worden geaccepteerd, kunt u niet alleen specificeren welke pandas DataFrames moeten worden gecombineerd, maar ook welk type join moet worden gebruikt en andere details.

Parameter Beschrijving Standaardwaarde
links Het eerste DataFrame dat moet worden samengevoegd
rechts Het tweede DataFrame dat moet worden samengevoegd
hoe Het type join-bewerking dat moet worden uitgevoerd (inner, outer, left, right) inner
op De kolom(men) of indexniveau(s) die als sleutels moeten worden gebruikt; moeten in beide DataFrames aanwezig zijn
left_on De kolom(men) of indexniveau(s) van het linker DataFrame die als sleutel(s) moeten worden gebruikt
right_on De kolom(men) of indexniveau(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 resulterende DataFrame lexicografisch gesorteerd. False
achtervoegsels Achtervoegsels die worden gebruikt om kolommen met dezelfde naam te onderscheiden ("_x", "_y")
kopiëren Als False, wordt kopiëren vermeden True

Hoe pandas merge() te gebruiken

Hieronder volgen enkele voorbeelden om te illustreren hoe pandas merge() effectief kan worden gebruikt.

INNER JOIN

Een INNER JOIN combineert twee pandas DataFrames en retourneert alleen de rijen waarvan de sleutels in beide DataFrames overeenkomen. Om een beter beeld te krijgen van hoe dit werkt, maken we twee DataFrames:

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 resulterende DataFrames 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 oorspronkelijke DataFrames voorkomen.

Key    Value1    Value2
0     B            2            4
1     C            3            5

OUTER JOIN

Een OUTER JOIN voegt ook twee DataFrames samen, maar in tegenstelling tot INNER JOIN retourneert het alle rijen en vult het ontbrekende waarden in met NaN.

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

Het onderstaande DataFrame bevat alle rijen uit beide DataFrames. NaN wordt gebruikt voor de ontbrekende 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 standaardvarianten van JOIN werken op een vergelijkbare manier.

Met behulp van left_on en right_on

Soms hebben twee DataFrames verschillende kolomnamen voor hun sleutels. In dat geval kunt u de parameters left_on en right_on gebruiken om aan te geven welke kolommen u wilt gebruiken. Laten we eerst twee nieuwe DataFrames 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 DataFrames 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 parameters left_on en right_on gebruiken om de bewerking JOIN uit te voeren met verschillende 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 bijbehorende sleutelkolommen gebruikt voor het samenvoegen.

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

Indexen als sleutels gebruiken

Je kunt ook de indexen van DataFrames als sleutels gebruiken door de parameters left_index en right_index in te stellen op True. Laten we eerst twee nieuwe DataFrames 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 DataFrames:

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 gebruikmaakt van de indexen uit de DataFrames:

Value1  Value2
B        2        4
C        3        5
Ga naar hoofdmenu