Hur man sammanfogar DataFrames med pandas merge()
Med pandas-funktionen DataFrame.merge() kan du kombinera DataFrames med hjälp av nycklar. Detta gör att du effektivt kan kombinera data från olika källor, vilket gör det möjligt att utföra mer omfattande analyser.
Vad är syntaxen för pandas merge()?
Python pandas DataFrame merge() -metoden kan acceptera en rad olika parametrar, vilket gör det möjligt för utvecklare att ange hur DataFrames ska kombineras. Den allmänna syntaxen för merge() funktionen är följande:
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)pythonVilka parametrar kan användas med pandas merge?
De olika parametrarna som accepteras av merge() gör att du inte bara kan ange vilka pandas DataFrames som ska kombineras, utan också vilken typ av sammanfogning som ska användas samt andra detaljer.
| Parameter | Beskrivning | Standardvärde |
|---|---|---|
| vänster | Den första DataFrame som ska slås samman | |
| höger | Den andra DataFrame som ska slås samman | |
| hur | Typ av sammanfogningsoperation som ska utföras (inner, outer, left, right)
|
inner
|
| på | Den eller de kolumner eller indexnivåer som ska användas som nycklar; måste finnas i båda DataFrames. | |
| left_on | Kolumn(er) eller indexnivå(er) i den vänstra DataFrame som ska användas som nyckel(er) | |
| right_on | Kolumn(er) eller indexnivå(er) i den högra DataFrame som ska användas som nyckel(ar) | |
| left_index | Om True används indexet för den vänstra DataFrame som nyckel
|
False
|
| right_index | Om True används indexet för den högra DataFrame som nyckel.
|
False
|
| sortera | Om True, sorteras nycklarna i den resulterande DataFrame lexicografiskt.
|
False
|
| suffix | Suffix som används för att skilja kolumner med samma namn åt. | ("_x", "_y")
|
| kopia | Om False, undviks en kopia.
|
True
|
Hur man använder pandas merge()
Nedan följer några exempel som illustrerar hur man använder pandas merge() på ett effektivt sätt.
INNER JOIN
En INNER JOIN kombinerar två pandas DataFrames och returnerar endast de rader där nycklarna matchar i båda DataFrames. För att få en bättre uppfattning om hur detta fungerar, låt oss skapa två 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 två resulterande DataFrames ser ut så här:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Nu kan vi utföra en INNER JOIN med hjälp av funktionen merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonUtmatningen visar att endast raderna som har nycklarna B och C ingår i DataFrame. Detta beror på att dessa två nycklar finns i båda de ursprungliga DataFrames.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
An OUTER JOIN slår också samman två DataFrames, men till skillnad från INNER JOIN returnerar den alla rader och fyller i saknade värden med NaN.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonDataFrame nedan innehåller alla rader från båda DataFrames. NaN används för de saknade värdena i nyckel A, som endast finns i df1, och nyckel D, som endast finns i 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.0De andra standardvarianterna av JOIN fungerar på liknande sätt.
Användning av left_on och right_on
Ibland har två DataFrames olika kolumnnamn för sina nycklar. I så fall kan du använda parametrarna left_on och right_on för att ange vilka kolumner som ska användas. Låt oss först skapa två nya DataFrames:
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 två DataFrames ser ut så här:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Vi kan använda parametrarna left_on och right_on för att utföra operationen JOIN med olika nycklar:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonGenom att uttryckligen använda left_on='Key' och right_on='Key2' används motsvarande nyckelkolumner för sammanslagningen.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Använda index som nycklar
Du kan också använda indexen i DataFrames som nycklar genom att ställa in parametrarna left_index och right_index till True. Låt oss först skapa två nya DataFrames med index:
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)pythonHär är DataFrames:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Nu kan vi utföra en JOIN -operation med hjälp av indexen:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonResultatet är en JOIN som använder indexen från DataFrames:
Value1 Value2
B 2 4
C 3 5