Kuinka yhdistää DataFrames pandas merge() -toiminnolla
Pandas-toiminnolla DataFrame.merge() voit yhdistää DataFrame-kehyksiä avainten avulla. Näin voit yhdistää tehokkaasti eri lähteistä peräisin olevia tietoja ja suorittaa kattavampia analyyseja.
Mikä on pandas merge():n syntaksi?
Python pandas DataFrame merge() -menetelmä voi hyväksyä erilaisia parametreja, joiden avulla kehittäjät voivat määrittää, miten DataFrames-kehykset tulisi yhdistää. merge() yleinen syntaksi on seuraava:
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)pythonPandas merge() -funktio on samanlainen kuin JOIN-operaatio SQL:ssä. Kokemus relaatiotietokannoista, kuten SQL, voi helpottaa pandas DataFrame merge() -menetelmän toiminnan ymmärtämistä. On kuitenkin syytä muistaa, että niissä on joitakin eroja. Pandasissa, jos molemmilla avainsarakkeilla on arvot, jotka arvioidaan nollaksi, myös nämä arvot yhdistetään.
Mitä parametreja voidaan käyttää pandas merge kanssa?
merge() hyväksymien eri parametrien avulla voit määrittää paitsi yhdistettävät pandas DataFrames -kehykset myös käytettävän liitostyypin ja muut yksityiskohdat.
| Parametri | Kuvaus | Oletusarvo |
|---|---|---|
| vasen | Ensimmäinen yhdistettävä DataFrame | |
| oikea | Toinen yhdistettävä DataFrame | |
| miten | Suoritettavan yhdistämistoiminnon tyyppi (inner, outer, left, right)
|
inner
|
| on | Avainina käytettävät sarakkeet tai indeksitasot; niiden on oltava läsnä molemmissa DataFrame-kehyksissä | |
| vasen_on | Vasemmalla DataFrame-kehyksessä olevat sarakkeet tai indeksitasot, joita tulisi käyttää avaimina | |
| right_on | Oikean DataFrame-kehyksen sarakkeet tai indeksitasot, joita tulisi käyttää avaimina | |
| left_index | Jos True, vasemman DataFrame-kehyksen indeksi käytetään avaimena
|
False
|
| right_index | Jos True, oikean DataFrame-kehyksen indeksi käytetään avaimena.
|
False
|
| sort | Jos True, tuloksena olevan DataFrame-kehyksen avaimet lajitellaan leksikografisesti.
|
False
|
| jälkiliitteet | Suffiksit, joita käytetään erottamaan samannimiset sarakkeet toisistaan. | ("_x", "_y")
|
| kopio | Jos False, kopiointia vältetään
|
True
|
Kuinka käyttää pandas merge()
Alla on muutamia esimerkkejä, jotka auttavat havainnollistamaan pandas merge() tehokasta käyttöä.
INNER JOIN
INNER JOIN yhdistää kaksi pandas-DataFrame-taulukkoa ja palauttaa vain rivit, joiden avaimet vastaavat molempia DataFrame-taulukoita. Jotta voimme paremmin ymmärtää, miten tämä toimii, luodaan kaksi DataFrame-taulukkoa:
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)pythonTuloksena saadut kaksi DataFrame-taulukkoa näyttävät tältä:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Nyt voimme suorittaa INNER JOIN käyttämällä merge() -funktiota:
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonTuloksesta näkyy, että vain rivit, joilla on avaimet B ja C, sisältyvät DataFrame-kehykseen. Tämä johtuu siitä, että nämä kaksi avainta ovat olemassa molemmissa alkuperäisissä DataFrame-kehyksissä.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
An OUTER JOIN yhdistää myös kaksi DataFrame-taulukkoa, mutta toisin kuin INNER JOIN, se palauttaa kaikki rivit ja täyttää puuttuvat arvot arvolla NaN.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonAlla oleva DataFrame sisältää kaikki rivit molemmista DataFrame-taulukoista. NaN käytetään puuttuvien arvojen korvaamiseen avaimessa A, joka on vain df1 ssä, ja avaimessa D, joka on vain df2:ssa.
Key Value1 Value2
0 A 1.0 NaN
1 B 2.0 4.0
2 C 3.0 5.0
3 D NaN 6.0Muut JOIN:n vakiovaihtoehdot toimivat samalla tavalla.
Käyttämällä left_on ja right_on
Joskus kahdella DataFrame-kehyksellä on eri sarakkeiden nimet avaiminaan. Tällöin voit käyttää parametreja left_on ja right_on määrittääksesi, mitä sarakkeita käytetään. Luodaan ensin kaksi uutta DataFrame-kehystä:
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)pythonKaksi DataFrame-taulukkoa näyttävät seuraavalta:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Voimme käyttää parametreja left_on ja right_on suorittaaksemme toiminnon JOIN eri avaimilla:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonKäyttämällä nimenomaisesti left_on='Key' ja right_on='Key2', vastaavat avainkolumnit käytetään yhdistämiseen.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Indeksien käyttö avaimina
Voit myös käyttää DataFrame-taulukoiden indeksejä avaimina asettamalla parametrit left_index ja right_index arvoon True. Luodaan ensin kaksi uutta DataFrame-taulukkoa indekseillä:
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)pythonTässä ovat DataFrames:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Nyt voimme suorittaa JOIN indeksejä käyttämällä:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonTuloksena on JOIN, joka käyttää DataFrames-indeksejä:
Value1 Value2
B 2 4
C 3 5