# Kuidas ühendada DataFrames pandas merge() abil

Funktsiooni pandas `DataFrame.merge()` abil saate kombineerida DataFrames’i võtmeid kasutades. See võimaldab teil tõhusalt kombineerida erinevatest allikatest pärit andmeid, mis võimaldab teil teha põhjalikumaid analüüse.

## Mis on pandas `merge()` süntaks?

Python pandas DataFrame `merge()` meetod võtab vastu mitmesuguseid parameetreid, mis võimaldab arendajatel määrata, kuidas DataFrames’i tuleks kombineerida. `merge()` funktsiooni üldine süntaks on järgmine:

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

Note Funktsioon pandas `merge()` on sarnane SQL-i operatsiooniga JOIN. Kogemus relatsiooniliste andmebaasidega, nagu [SQL](https://www.ionos.com/et-ee/digitalguide/server/oskusteave/mis-on-sql/), võib aidata paremini mõista, kuidas toimib pandas DataFrame `merge()` meetod. Siiski tuleb meeles pidada, et on ka mõned erinevused. Pandas’es, kui mõlema võtmeveeru väärtused on *null*, ühendatakse ka need väärtused.

### Milliseid parameetreid saab kasutada pandas `merge`-ga?

`merge()` poolt aktsepteeritavad erinevad parameetrid võimaldavad teil määrata mitte ainult, millised [pandas DataFrames’id](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-pandas-dataframe/) ühendada, vaid ka millist liitmist kasutada, samuti muid detaile.

<table>
  <thead>
    <tr>
      <th><strong>Parameeter</strong></th>
      <th><strong>Kirjeldus</strong></th>
      <th><strong>Vaikimisi väärtus</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>vasak</td>
      <td>Esimene ühendatav andmeraamistik</td>
      <td></td>
    </tr>
    <tr>
      <td>parem</td>
      <td>Teine ühendatav andmestik</td>
      <td></td>
    </tr>
    <tr>
      <td>kuidas</td>
      <td>Teostatava ühendamise tüüp (`inner`, `outer`, `left`, `right`)</td>
      <td>`inner`</td>
    </tr>
    <tr>
      <td>on</td>
      <td>Võtmetena kasutatavad veerud või indeksitasemed; peavad olema olemas mõlemas DataFrame’is</td>
      <td></td>
    </tr>
    <tr>
      <td>vasakul</td>
      <td>Vasaku DataFrame’i veerg(ud) või indeksitasand(id), mida tuleks kasutada võtmena</td>
      <td></td>
    </tr>
    <tr>
      <td>right\_on</td>
      <td>Parempoolse DataFrame’i veerg(ud) või indeksitasand(id), mida tuleks kasutada võtmena</td>
      <td></td>
    </tr>
    <tr>
      <td>left\_index</td>
      <td>Kui `True`, kasutatakse vasaku DataFrame’i indeksit võtmena</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>right\_index</td>
      <td>Kui `True`, kasutatakse parempoolse DataFrame’i indeksit võtmena.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>sort</td>
      <td>Kui `True`, sorteeritakse tulemusliku DataFrame’i võtmed leksikograafiliselt.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>sufiksid</td>
      <td>Sufiksid, mida kasutatakse sama nimega veergude eristamiseks.</td>
      <td>`("_x", "_y")`</td>
    </tr>
    <tr>
      <td>kopeerimine</td>
      <td>Kui `False`, siis koopiat ei tehta</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## Kuidas kasutada pandas `merge()`

Allpool on toodud mõned näited, mis aitavad illustreerida, kuidas pandas `merge()` efektiivselt kasutada.

### `INNER JOIN`

INNER JOIN ühendab kaks pandas DataFrames’i ja **tagastab ainult need read, mille võtmed mõlemas DataFrames’is ühtivad**. Et paremini mõista, kuidas see toimib, loome kaks DataFrames’i:

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

Kaks tulemuseks saadud andmestruktuuri näevad välja järgmised:

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

Nüüd saame teha `INNER JOIN`, kasutades funktsiooni `merge()`:

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

Väljund näitab, et ainult read, millel on võtmed B ja C, on lisatud DataFrame’i. Seda seetõttu, et need kaks võtit on olemas **mõlemas algses DataFrame’is**.

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

### `OUTER JOIN`

An `OUTER JOIN` ühendab samuti kaks DataFrame’i, kuid erinevalt `INNER JOIN` tagastab see **kõik read** ja täidab **puuduvad väärtused `NaN`ga**.

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

Allpool olev DataFrame sisaldab **mõlema DataFrame’i kõiki ridu**. `NaN` kasutatakse puuduvate väärtuste jaoks võtmes A, mis on ainult `df1`, ja võtmes D, mis on ainult `df2`-s.

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

Note Teised `JOIN` standardvariandid töötavad sarnaselt.

### Kasutades `left_on` ja `right_on`

Mõnikord on kahel DataFrame’il erinevad veerunimed võtmetena. Sel juhul saate kasutada parameetreid `left_on` ja `right_on`, et määrata, milliseid veerge kasutada. Esmalt loome kaks uut DataFrame’i:

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

Kaks DataFrame’i näevad välja järgmised:

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

Me saame kasutada parameetreid `left_on` ja `right_on`, et teostada operatsiooni `JOIN` erinevate võtmete abil:

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

Selgesõnaliselt kasutades `left_on='Key'` ja `right_on='Key2'`, kasutatakse vastavaid võtmeveerge ühendamiseks.

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

### Indeksite kasutamine võtmetena

Võite kasutada ka **DataFrames’i indeksite võtmeid,** seadistades parameetrid `left_index` ja `right_index` väärtusele `True`. Esmalt loome kaks uut DataFrames’i indeksitega:

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

Siin on andmestruktuurid:

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

Nüüd saame indeksite abil teha `JOIN` operatsiooni:

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

Tulemuseks on `JOIN`, mis kasutab DataFrames’i indekseid:

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


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-pandas-dataframe-uehendamine/](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/python-pandas-dataframe-uehendamine/) for AI/LLM consumption.