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)
python

Milyen 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)
python

A 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            6

Most 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)
python

A 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            5

OUTER 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)
python

Az 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.0
Megjegyzés

A 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)
python

A 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            6

Az 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)
python

left_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            5

Indexek 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)
python

Itt vannak a DataFrames:

Value1
A        1
B        2
C        3
    Value2
B        4
C        5
D        6

Most 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)
python

Az eredmény egy JOIN érték, amely a DataFrames indexeit használja:

Value1  Value2
B        2        4
C        3        5
Ugrás a főmenübe