Jak sloučit DataFrames pomocí pandas merge()
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)pythonJaké 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)pythonVý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 6Nyní můžeme provést INNER JOIN pomocí funkce merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonVý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 5OUTER 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)pythonNíž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.0Ostatní 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)pythonOba 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 6Parametry 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)pythonExplicitní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 5Použ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)pythonZde jsou datové rámce:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Nyní 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)pythonVýsledkem je JOIN, které používá indexy z DataFrames:
Value1 Value2
B 2 4
C 3 5