Pandas merge() – Két DataFrame objektum egyesítése

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.

  Javítsa ki az NW-6-503 Netflix hibakódot

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

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.