Pomocí funkce pandas DataFrame.merge() můžete kombinovat DataFrames pomocí klíčů. To vám umožní efektivně kombinovat data z různých zdrojů a provádět tak komplexnější analýzy.

Jaká je syntaxe pro pandas merge()?

Metoda Python pandas DataFrame merge() může přijímat řadu různých parametrů, což vývojářům umožňuje specifikovat, jak by měly být DataFrames kombinovány. Obecná syntaxe funkce merge() je následující:

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

Jaké parametry lze použít s pandas merge?

Různé parametry přijímané funkcí merge() vám umožňují nejen určit, které pandas DataFrames se mají kombinovat, ale také typ spojení, který se má použít, a další podrobnosti.

Parametr Popis Výchozí hodnota
left První DataFrame, který má být sloučen
pravý Druhý DataFrame, který má být sloučen
jak Typ operace spojení, která má být provedena (inner, outer, left, right) inner
na Sloupce nebo úrovně indexu, které se mají použít jako klíče; musí být přítomny v obou DataFrames
left_on Sloupec (sloupce) nebo úroveň (úrovně) indexu levého DataFrame, které by měly být použity jako klíč (klíče)
right_on Sloupce nebo úrovně indexu pravého DataFrame, které by měly být použity jako klíče
left_index Pokud je hodnot True, použije se jako klíč index levého DataFrame. False
right_index Pokud je hodnot True, jako klíč se použije index pravého DataFrame. False
sort Pokud je hodnota True, klíče výsledného DataFrame jsou seřazeny lexikograficky. False
přípony Přípony používané k rozlišení sloupců se stejným názvem. ("_x", "_y")
kopírovat Pokud False, kopírování se nevykoná. True

Jak používat pandas merge()

Níže uvádíme několik příkladů, které pomohou ilustrovat, jak efektivně používat pandas merge().

INNER JOIN

INNER JOIN kombinuje dva pandas DataFrames a vrací pouze řádky, kde se klíče shodují v obou DataFrames. Abychom lépe pochopili, jak to funguje, vytvořme 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)
python

Výsledné dva datové rámce vypadají takto:

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

Nyní můžeme provést INNER JOIN pomocí funkce merge():

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

Výstup ukazuje, že do DataFrame jsou zahrnuty pouze řádky, které mají klíče B a C. Důvodem je to, že tyto dva klíče existují v obou původních DataFrames.

Key    Value1    Value2
0     B            2            4
1     C            3            5

OUTER JOIN

An OUTER JOIN také slučuje dva DataFrames, ale na rozdíl od INNER JOIN vrací všechny řádky a vyplňuje chybějící hodnoty hodnotou NaN.

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

Níže uvedený DataFrame obsahuje všechny řádky z obou DataFrames. NaN se používá pro chybějící hodnoty v klíči A, který se vyskytuje pouze v df1, a klíči D, který se vyskytuje pouze 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.0
Poznámka

Ostatní standardní varianty JOIN fungují podobným způsobem.

Použití left_on a right_on

Někdy mají dva DataFrames různé názvy sloupců pro své klíče. V takovém případě můžete pomocí parametrů left_on a right_on určit, které sloupce se mají použít. Nejprve vytvoříme dva nové 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)
python

Oba datové rámce vypadají takto:

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

Parametry left_on a right_on můžeme použít k provedení operace JOIN pomocí různých klíčů:

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

Explicitním použitím left_on='Key' a right_on='Key2' se pro sloučení použijí odpovídající klíčové sloupce.

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

Použití indexů jako klíčů

Můžete také použít indexy DataFrames jako klíče nastavením parametrů left_index a right_index na True. Nejprve vytvoříme dva nové DataFrames s indexy:

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

Zde jsou datové rámce:

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

Nyní můžeme provést operaci JOIN pomocí indexů:

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

Výsledkem je JOIN, které používá indexy z DataFrames:

Value1  Value2
B        2        4
C        3        5
Přejít do hlavního menu