Hoe DataFrames samenvoegen met pandas merge()
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)pythonWelke 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)pythonDe 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 6Nu 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)pythonDe 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 5OUTER 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)pythonHet 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.0De 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)pythonDe 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 6We 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)pythonDoor 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 5Indexen 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)pythonHier zijn de DataFrames:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Nu 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)pythonHet resultaat is een JOIN die gebruikmaakt van de indexen uit de DataFrames:
Value1 Value2
B 2 4
C 3 5