Hogyan lehet DataFrames-eket egyesíteni a pandas merge() funkcióval?
A pandas DataFrame.merge() funkcióval kulcsok segítségével kombinálhatja a DataFrames-eket. Ez lehetővé teszi, hogy hatékonyan kombinálja a különböző forrásokból származó adatokat, így átfogóbb elemzéseket végezhet.
Mi a pandas merge() szintaxisa?
A Python pandas DataFrame merge() metódus számos különböző paramétert fogad el, lehetővé téve a fejlesztőknek, hogy megadják, hogyan kell kombinálni a DataFrame-eket. A merge() függvény általános szintaxisa a következő:
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)pythonMilyen paraméterek használhatók a pandas 2 merge-ben?
merge() által elfogadott különböző paraméterek lehetővé teszik, hogy ne csak meghatározza, mely pandas DataFrames-eket kívánja kombinálni, hanem azt is, hogy milyen típusú összekapcsolást kíván használni, valamint egyéb részleteket is.
| Paraméter | Leírás | Alapértelmezett érték |
|---|---|---|
| bal | Az első egyesítendő DataFrame | |
| jobb | A második egyesítendő DataFrame | |
| hogy | A végrehajtandó csatlakozási művelet típusa (inner, outer, left, right)
|
inner
|
| on | A kulcsként használandó oszlop(ok) vagy indexszint(ek); mindkét DataFrame-ben jelen kell lennie | |
| left_on | A bal oldali DataFrame oszlopai vagy indexszintjei, amelyeket kulcsként kell használni | |
| right_on | A jobb oldali DataFrame oszlopai vagy indexszintjei, amelyeket kulcsként kell használni | |
| left_index | Ha True, akkor a bal oldali DataFrame indexét használja kulcsként
|
False
|
| right_index | Ha True, akkor a jobb oldali DataFrame indexe kerül felhasználásra kulcsként.
|
False
|
| sort | Ha True, akkor a kapott DataFrame kulcsai lexikográfiai sorrendben vannak rendezve.
|
False
|
| utótagok | Az azonos nevű oszlopok megkülönböztetésére használt utótagok. | ("_x", "_y")
|
| másolás | Ha False, akkor a másolás elkerülhető.
|
True
|
A pandák használata merge()
Az alábbiakban néhány példa szemlélteti a pandas merge() hatékony használatát.
INNER JOIN
Az INNER JOIN két pandas DataFrame-et kombinál, és csak azokat a sorokat adja vissza, amelyek kulcsai mindkét DataFrame-ben megegyeznek. Hogy jobban megértsük, hogyan működik ez, hozzunk létre két DataFrame-et:
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)pythonA két kapott DataFrame így néz ki:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Most a merge() függvény segítségével végrehajthatunk egy INNER JOIN:
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonA kimenet azt mutatja, hogy csak azok a sorok szerepelnek a DataFrame-ben, amelyek B és C kulcsokkal rendelkeznek. Ez azért van, mert ez a két kulcs mindkét eredeti DataFrame-ben megtalálható.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
Az OUTER JOIN szintén két DataFrame-et egyesít, de INNER JOIN eltérően az összes sort visszaadja, és a hiányzó értékeket NaN tölti ki.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonAz alábbi DataFrame mindkét DataFrame összes sorát tartalmazza. NaN használjuk a hiányzó értékek helyettesítésére a df1 található A kulcsban és df2-ban található D kulcsban.
Key Value1 Value2
0 A 1.0 NaN
1 B 2.0 4.0
2 C 3.0 5.0
3 D NaN 6.0A JOIN es modell többi standard változata hasonló módon működik.
left_on és right_on használata
Előfordulhat, hogy két DataFrame kulcsainak oszlopnevei eltérőek. Ebben az esetben a left_on és right_on paraméterekkel adhatja meg, hogy mely oszlopokat kívánja használni. Először hozzunk létre két új DataFrame-et:
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)pythonA két DataFrame így néz ki:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Az left_on és right_on paramétereket használhatjuk az JOIN művelet végrehajtásához különböző kulcsok használatával:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonleft_on='Key' és right_on='Key2' kifejezett használatával a megfelelő kulcsoszlopok kerülnek felhasználásra az egyesítéshez.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Indexek használata kulcsként
A DataFrames indexeit is használhatja kulcsokként, ha a left_index és right_index paramétereket True-re állítja. Először hozzunk létre két új DataFrame-et indexekkel:
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)pythonItt vannak a DataFrames:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Most az indexek segítségével elvégezhetjük a JOIN műveletet:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonAz eredmény egy JOIN érték, amely a DataFrames indexeit használja:
Value1 Value2
B 2 4
C 3 5