Ako zlúčiť DataFrames pomocou pandas merge()
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)pythonAké 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)pythonDva 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 6Teraz môžeme vykonať INNER JOIN pomocou funkcie merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonVý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 5OUTER 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)pythonNižš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.0Ostatné š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)pythonOba DataFrames vyzerajú takto:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Parametre 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)pythonExplicitný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 5Použí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)pythonTu sú dátové rámce:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Teraz 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)pythonVýsledkom je JOIN, ktoré používa indexy z DataFrames:
Value1 Value2
B 2 4
C 3 5