Kako združiti DataFrames s pandas merge()
S funkcijo pandas DataFrame.merge() lahko združujete DataFrames z uporabo ključev. To vam omogoča učinkovito združevanje podatkov iz različnih virov, kar vam omogoča izvajanje bolj celovitih analiz.
Kakšna je sintaksa za pandas merge()?
Metoda Python pandas DataFrame merge() sprejema različne parametre, kar razvijalcem omogoča, da določijo, kako naj se DataFrames združijo. Splošna sintaksa funkcije merge() je naslednja:
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)pythonKateri parametri se lahko uporabljajo s pandas merge?
Različni parametri, ki jih sprejema merge(), vam omogočajo, da določite ne le, katere pandas DataFrames želite združiti, ampak tudi, kateri tip združitve želite uporabiti, ter druge podrobnosti.
| Parameter | Opis | Privzeta vrednost |
|---|---|---|
| levo | Prvi DataFrame, ki se združi | |
| desno | Drugi DataFrame, ki ga je treba združiti | |
| kako | Vrsta operacije združevanja, ki jo je treba izvesti (inner, outer, left, right)
|
inner
|
| na | Stolpci ali ravni indeksa, ki se uporabijo kot ključi; morajo biti prisotni v obeh DataFrames. | |
| left_on | Stolpec(-ci) ali indeksna raven(-i) levega DataFrame-a, ki naj se uporabi(-jo) kot ključ(-i) | |
| desno_na | Stolpec(-i) ali indeksna raven(-e) desnega DataFrame-a, ki naj se uporabi(-jo) kot ključ(-i) | |
| left_index | Če je True, se indeks levega DataFrame uporabi kot ključ
|
False
|
| desni_indeks | Če je True, se kot ključ uporabi indeks desnega DataFrame-a.
|
False
|
| sort | Če je True, so ključi končnega DataFrame razvrščeni leksikografsko.
|
False
|
| pona | Pripone, ki se uporabljajo za razlikovanje stolpcev z enakim imenom. | ("_x", "_y")
|
| kopija | Če je False, se kopiranje izogne.
|
True
|
Kako uporabljati pandas merge()
Spodaj je nekaj primerov, ki pomagajo ponazoriti, kako učinkovito uporabljati pandas merge().
INNER JOIN
INNER JOIN združi dva pandas DataFrames in vrne samo vrstice, kjer se ključi ujemajo v obeh DataFrames. Da bi bolje razumeli, kako to deluje, ustvarimo 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 nastala DataFrames sta videti takole:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Sedaj lahko izvedemo INNER JOIN z uporabo funkcije merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonIzhodni podatki kažejo, da so v DataFrame vključene samo vrstice, ki imajo ključa B in C. To je zato, ker ta dva ključa obstajata v obeh izvirnih DataFrame.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
An OUTER JOIN prav tako združi dva DataFrames, vendar za razliko od INNER JOIN vrne vse vrstice in izpolni manjkajoče vrednosti s NaN.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonSpodnji DataFrame vključuje vse vrstice iz obeh DataFrames. NaN se uporablja za manjkajoče vrednosti v ključu A, ki je samo v df1, in ključu D, ki je samo 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.0Druge standardne različice JOIN delujejo na podoben način.
Uporaba left_on in right_on
Včasih imata dva DataFrames različna imena stolpcev za svoje ključe. V tem primeru lahko uporabite parametra left_on in right_on, da določite, katere stolpce želite uporabiti. Najprej ustvarimo dva nova 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 sta videti takole:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Parametre left_on in right_on lahko uporabimo za izvedbo operacije JOIN z različnimi tipkami:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonZ izrecno uporabo left_on='Key' in right_on='Key2' se za združevanje uporabijo ustrezni ključni stolpci.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Uporaba indeksov kot ključev
Indekse DataFrames lahko uporabite tudi kot ključe, tako da parametra left_index in right_index nastavite na True. Najprej ustvarimo dva nova DataFrames z indeksi:
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)pythonTukaj so podatkovni okviri:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Sedaj lahko izvedemo operacijo JOIN z uporabo indeksov:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonRezultat je JOIN, ki uporablja indekse iz DataFrames:
Value1 Value2
B 2 4
C 3 5