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)pythonMitä 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