Pandas merge() – Két DataFrame objektum egyesítése
Bevezetés
A Pandas könyvtár egy nélkülözhetetlen eszköz az adatelemzés és a manipuláció terén a Pythonban. A merge() függvénye lehetővé teszi, hogy két DataFrame objektumot egyesítsünk egy közös oszlopon vagy oszlopokon alapulva. Ez egy erőteljes eszköz, amely segítségével kombinálhatjuk és gazdagíthatjuk adatainkat.
A merge() függvény használatának megértéséhez fontos megkülönböztetni az egyesítési típusokat:
* Belső egyesítés: Csak azokat a sorokat tartalmazza, amelyek mindkét DataFrame objektumban megtalálhatók.
* Külső egyesítés (bal): Tartalmazza az első DataFrame objektum összes sorát, még akkor is, ha azok nem találhatók meg a második DataFrame objektumban.
* Külső egyesítés (jobb): Tartalmazza a második DataFrame objektum összes sorát, még akkor is, ha azok nem találhatók meg az első DataFrame objektumban.
* Teljes egyesítés: Tartalmazza mindkét DataFrame objektum összes sorát, még akkor is, ha nem találhatók meg mindkét objektumban.
Hogyan használjuk a merge() függvényt?
A merge() függvény szintaxisa a következő:
python
pd.merge(left, right, on=None, how='inner', left_on=None, right_on=None, left_index=False, right_index=False)
Ahol:
* left: Az első DataFrame objektum.
* right: A második DataFrame objektum.
* on: A közös oszlop(ok) neve(i), amely(ek) alapján az egyesítés történik. Ha None, akkor az indexek lesznek az alapértelmezett egyesítési kulcsok.
* how: Az egyesítési típus. Az érvényes értékek: ‘inner’, ‘outer’, ‘left’, ‘right’ és ‘cross’.
* left_on: A bal DataFrame objektum egyesítési kulcsának neve.
* right_on: A jobb DataFrame objektum egyesítési kulcsának neve.
* left_index: True, ha a bal DataFrame objektum indexét szeretnénk használni egyesítési kulcsként.
* right_index: True, ha a jobb DataFrame objektum indexét szeretnénk használni egyesítési kulcsként.
Példák
A merge() függvény használatát a következő példákon keresztül szemléltetjük:
Belső egyesítés:
python
import pandas as pd
Tartalomjegyzék
Két DataFrame létrehozása
df1 = pd.DataFrame({'név': ['Ádám', 'Éva', 'Péter'], 'kor': [25, 22, 30]})
df2 = pd.DataFrame({'név': ['Ádám', 'Anna', 'Dávid'], 'város': ['Budapest', 'Debrecen', 'Szeged']})
Belső egyesítés a 'név' oszlop alapján
df_inner = pd.merge(df1, df2, on='név')
print(df_inner)
Eredmény:
név kor város
0 Ádám 25 Budapest
Bal külső egyesítés:
python
Bal külső egyesítés a 'név' oszlop alapján
df_left = pd.merge(df1, df2, on='név', how='left')
print(df_left)
Eredmény:
név kor város
0 Ádám 25 Budapest
1 Éva 22 NaN
2 Péter 30 NaN
Jobb külső egyesítés:
python
Jobb külső egyesítés a 'név' oszlop alapján
df_right = pd.merge(df1, df2, on='név', how='right')
print(df_right)
Eredmény:
név kor város
0 Ádám 25 Budapest
1 Anna NaN Debrecen
2 Dávid NaN Szeged
Teljes egyesítés:
python
Teljes egyesítés a 'név' oszlop alapján
df_full = pd.merge(df1, df2, on='név', how='outer')
print(df_full)
Eredmény:
név kor város
0 Ádám 25 Budapest
1 Éva 22 NaN
2 Péter 30 NaN
3 Anna NaN Debrecen
4 Dávid NaN Szeged
Következtetések
A Pandas merge() függvénye egy sokoldalú eszköz, amely lehetővé teszi, hogy két DataFrame objektumot egyesítsünk különböző feltételek alapján. A különböző egyesítési típusok felhasználhatók különböző adatelemzési és -manipulációs feladatokhoz. A merge() függvény megértése és megfelelő használata nagyban javíthatja a Pandas-adatkezelési képességeit.
GYIK
* Mi a különbség a merge() és a join() függvények között?
* A merge() és a join() függvények hasonlóak, azonban a join() függvény már elavult, és inkább a merge() függvény használata javasolt.
* Hogyan egyesíthetek két DataFrame objektumot több kulcsoszlopon?
* A merge() függvény támogatja a több kulcsoszlopon történő egyesítést a left_on és right_on paraméterek használatával.
* Hogyan egyesíthetem két DataFrame objektumot indexsorok alapján?
* A left_index és right_index paraméterek True értékre állításával egyesítheti a DataFrame objektumokat az indexsorok alapján.
* Mi a teendő, ha az egyesített DataFrame objektumban duplikált sorok vannak?
* A merge() függvény nem távolítja el automatikusan a duplikált sorokat. A drop_duplicates() módszer segítségével eltávolíthatja a duplikált sorokat az egyesített DataFrame objektumból.
* Hogyan egyesíthetek két DataFrame objektumot, ha az egyesítési oszlopok különböző nevekkel rendelkeznek?
* A left_on és right_on paraméterek használatával átnevezheti az egyesítési oszlopokat a merge() függvény hívásában.
* Hogyan egyesíthetek két DataFrame objektumot, ha nem rendelkeznek közös oszlopokkal?
* A merge() függvény támogatja a keresztezési egyesítést (how=’cross’), amely kombinálja a bal és jobb DataFrame objektumok összes sorát, még akkor is, ha nincs közös oszlopok.
* Mi az a hibakód, ha a merge() függvény az „on” argumentumban megadott oszlopok nem találhatók a DataFrame objektumokban?
* A „KeyError” hibakód akkor jelenik meg, ha az „on” argumentumban megadott oszlopok nem találhatók a DataFrame objektumokban.
* Hogyan javítható a „Merge on columns that are not indexable” hiba a merge() függvény használata során?
* Ez a hiba akkor jelenik meg, ha az „on” argumentumban megadott oszlopok nem indexelhetők. Ennek kijavításához indexelhető oszlopokat kell használni az egyesítési kulcsként.
* Hogyan kezelhető a „After merging, the left and right dataframes are not aligned” hiba a merge() függvény használata során?
* Ez a hiba akkor jelenik meg, ha a bal és jobb DataFrame objektumok nem vannak igazítva. Ennek kijavításához gondoskodni kell arról, hogy a bal és jobb DataFrame objektumok típusai és oszlopai kompatibilisek legyenek.