# 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:

```python
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)
```

Huomio Pandas `merge()` -funktio on samanlainen kuin JOIN-operaatio SQL:ssä. Kokemus relaatiotietokannoista, kuten [SQL](https://www.ionos.com/fi-fi/digitalguide/palvelin/osaaminen/mikae-on-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](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe/) -kehykset myös käytettävän liitostyypin ja muut yksityiskohdat.

<table>
  <thead>
    <tr>
      <th><strong>Parametri</strong></th>
      <th><strong>Kuvaus</strong></th>
      <th><strong>Oletusarvo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>vasen</td>
      <td>Ensimmäinen yhdistettävä DataFrame</td>
      <td></td>
    </tr>
    <tr>
      <td>oikea</td>
      <td>Toinen yhdistettävä DataFrame</td>
      <td></td>
    </tr>
    <tr>
      <td>miten</td>
      <td>Suoritettavan yhdistämistoiminnon tyyppi (`inner`, `outer`, `left`, `right`)</td>
      <td>`inner`</td>
    </tr>
    <tr>
      <td>on</td>
      <td>Avainina käytettävät sarakkeet tai indeksitasot; niiden on oltava läsnä molemmissa DataFrame-kehyksissä</td>
      <td></td>
    </tr>
    <tr>
      <td>vasen\_on</td>
      <td>Vasemmalla DataFrame-kehyksessä olevat sarakkeet tai indeksitasot, joita tulisi käyttää avaimina</td>
      <td></td>
    </tr>
    <tr>
      <td>right\_on</td>
      <td>Oikean DataFrame-kehyksen sarakkeet tai indeksitasot, joita tulisi käyttää avaimina</td>
      <td></td>
    </tr>
    <tr>
      <td>left\_index</td>
      <td>Jos `True`, vasemman DataFrame-kehyksen indeksi käytetään avaimena</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>right\_index</td>
      <td>Jos `True`, oikean DataFrame-kehyksen indeksi käytetään avaimena.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>sort</td>
      <td>Jos `True`, tuloksena olevan DataFrame-kehyksen avaimet lajitellaan leksikografisesti.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>jälkiliitteet</td>
      <td>Suffiksit, joita käytetään erottamaan samannimiset sarakkeet toisistaan.</td>
      <td>`("_x", "_y")`</td>
    </tr>
    <tr>
      <td>kopio</td>
      <td>Jos `False`, kopiointia vältetään</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## 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:

```python
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)
```

Tuloksena saadut kaksi DataFrame-taulukkoa näyttävät tältä:

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

Nyt voimme suorittaa `INNER JOIN` käyttämällä `merge()` -funktiota:

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

Tuloksesta 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ä**.

```none
Key    Value1    Value2
0     B            2            4
1     C            3            5
```

### `OUTER 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`**.

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

Alla 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.

```none
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
```

Huomio Muut `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ä:

```python
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)
```

Kaksi DataFrame-taulukkoa näyttävät seuraavalta:

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

Voimme käyttää parametreja `left_on` ja `right_on` suorittaaksemme toiminnon `JOIN` eri avaimilla:

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

Käyttämällä nimenomaisesti `left_on='Key'` ja `right_on='Key2'`, vastaavat avainkolumnit käytetään yhdistämiseen.

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

### Indeksien 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ä:

```python
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)
```

Tässä ovat DataFrames:

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

Nyt voimme suorittaa `JOIN` indeksejä käyttämällä:

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

Tuloksena on `JOIN`, joka käyttää DataFrames-indeksejä:

```none
Value1  Value2
B        2        4
C        3        5
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-yhdistaeminen/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-pandas-dataframe-yhdistaeminen/) for AI/LLM consumption.