Pomocou funkcie pandas DataFrame.merge() môžete kombinovať DataFrames pomocou kľúčov. To vám umožňuje efektívne kombinovať údaje z rôznych zdrojov, čím môžete vykonávať komplexnejšie analýzy.

Aká je syntax pre pandas merge()?

Metóda Python pandas DataFrame merge() môže prijať celý rad rôznych parametrov, čo umožňuje vývojárom špecifikovať, ako by sa mali kombinovať DataFrames. Všeobecná syntax funkcie merge() je nasledovná:

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

Aké parametre možno použiť s pandas merge?

Rôzne parametre akceptované funkciou merge() vám umožňujú nielen určiť, ktoré pandas DataFrames sa majú kombinovať, ale aj typ spojenia, ktorý sa má použiť, ako aj ďalšie podrobnosti.

Parameter Popis Predvolená hodnota
ľavá Prvý DataFrame, ktorý sa má zlúčiť
vpravo Druhý DataFrame, ktorý sa má zlúčiť
ako Typ operácie spojenia, ktorá sa má vykonať (inner, outer, left, right) inner
na Stĺpce alebo úrovne indexu, ktoré sa majú použiť ako kľúče; musia byť prítomné v oboch DataFrames
left_on Stĺpec (stĺpce) alebo úroveň (úrovne) indexu ľavého DataFrame, ktoré by sa mali použiť ako kľúč (kľúče)
right_on Stĺpce alebo úrovne indexu pravého DataFrame, ktoré by sa mali použiť ako kľúče
left_index Ak je True, ako kľúč sa použije index ľavého DataFrame. False
right_index Ak je True, ako kľúč sa použije index pravého DataFrame. False
sort Ak je hodnota True, kľúče výsledného DataFrame sú zoradené lexikograficky. False
prípony Přípony používané na rozlíšenie stĺpcov s rovnakým názvom. ("_x", "_y")
kopírovať Ak False, kopírovanie sa nevykoná True

Ako používať pandas merge()

Nižšie uvádzame niekoľko príkladov, ktoré pomáhajú ilustrovať, ako efektívne používať pandas merge().

INNER JOIN

INNER JOIN kombinuje dva pandas DataFrames a vráti iba riadky, kde sa kľúče zhodujú v oboch DataFrames. Aby sme lepšie pochopili, ako to funguje, vytvorme dva 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)
python

Dva výsledné DataFrames vyzerajú takto:

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

Teraz môžeme vykonať INNER JOIN pomocou funkcie merge():

# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)
python

Výstup ukazuje, že do DataFrame sú zahrnuté iba riadky, ktoré obsahujú kľúče B a C. Je to preto, lebo tieto dva kľúče existujú v oboch pôvodných DataFrame.

Key    Value1    Value2
0     B            2            4
1     C            3            5

OUTER JOIN

An OUTER JOIN tiež spája dva DataFrames, ale na rozdiel od INNER JOIN vráti všetky riadky a chýbajúce hodnoty vyplní hodnotou NaN.

# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)
python

Nižšie uvedený DataFrame obsahuje všetky riadky z oboch DataFrames. NaN sa používa pre chýbajúce hodnoty v kľúči A, ktorý sa nachádza iba v df1, a v kľúči D, ktorý sa nachádza iba v 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.0
Poznámka

Ostatné štandardné varianty JOIN fungujú podobným spôsobom.

Použitie left_on a right_on

Niekedy majú dva DataFrames rôzne názvy stĺpcov pre svoje kľúče. V takomto prípade môžete použiť parametre left_on a right_on na určenie, ktoré stĺpce sa majú použiť. Najskôr vytvoríme dva nové 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)
python

Oba DataFrames vyzerajú takto:

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

Parametre left_on a right_on môžeme použiť na vykonanie operácie JOIN pomocou rôznych kľúčov:

# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)
python

Explicitným použitím left_on='Key' a right_on='Key2' sa na zlúčenie použijú príslušné kľúčové stĺpce.

Key    Value1 Key2    Value2
0     B            2        B            4
1     C            3        C            5

Používanie indexov ako kľúčov

Môžete tiež použiť indexy DataFrames ako kľúče nastavením parametrov left_index a right_index na True. Najskôr vytvoríme dva nové DataFrames s indexmi:

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

Tu sú dátové rámce:

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

Teraz môžeme pomocou indexov vykonať operáciu JOIN:

# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)
python

Výsledkom je JOIN, ktoré používa indexy z DataFrames:

Value1  Value2
B        2        4
C        3        5
Prejsť na hlavné menu