pandy spojit() je definován jako proces spojení dvou datových sad do jedné a zarovnání řádků na základě společných atributů nebo sloupců. Je to vstupní bod pro všechny standardní operace spojení databází mezi objekty DataFrame:
Syntax:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True)
Parametry:
- 'one_to_one' nebo '1:1': Kontroluje, zda jsou slučovací klíče jedinečné v levé i pravé datové sadě.
- 'one_to_many' nebo '1:m': Kontroluje, zda jsou slučovací klíče jedinečné pouze v levé datové sadě.
- 'many_to_one' nebo 'm:1': Kontroluje, zda jsou slučovací klíče jedinečné pouze ve správné datové sadě.
- 'many_to_many' nebo 'm:m': Je povoleno, ale nevede ke kontrole.
Je to objekt, který se spojí s DataFrame.
Typ sloučení, které se má provést.
Jedná se o názvy na úrovni sloupců nebo indexů, ke kterým se lze připojit. Musí se nacházet v levém i pravém DataFrames. Pokud on je None a neslučuje se na indexech, pak je výchozím nastavením průnik sloupců v obou DataFrames.
vlevo_na: štítek nebo seznam, nebo jako pole
Jedná se o názvy sloupců nebo indexových úrovní z levého DataFrame, které lze použít jako klíč. Může to být pole s délkou rovnou délce DataFrame.
Jedná se o názvy sloupců nebo indexových úrovní z pravého DataFrame, které lze použít jako klíče. Může to být pole s délkou rovnou délce DataFrame.
Používá index z levého DataFrame jako klíč(y) spojení, pokud je pravda. V případě MultiIndexu (hierarchického) by mnoho klíčů v jiném DataFrame (buď index nebo některé sloupce) mělo odpovídat počtu úrovní.
Jako klíč spojení používá index z pravého DataFrame. Má stejné použití jako left_index.
Pokud má hodnotu True, seřadí klíče spojení ve výsledném DataFrame v lexikografickém pořadí. Jinak pořadí klíčů spojení závisí na typu spojení (klíčové slovo how).
Přípony použít pro překrytí názvů sloupců v levém a pravém DataFrame. Sloupce používají hodnoty (False, False) k vyvolání výjimky při překrývání.
Pokud je True, vrátí kopii DataFrame.
V opačném případě se může vyhnout kopii.
Pokud je True, přidá sloupec do výstupu DataFrame ' _spojit “ s informacemi o zdroji každého řádku. Pokud se jedná o řetězec, bude do výstupu DataFrame přidán sloupec s informacemi o zdroji každého řádku a sloupec bude pojmenován jako hodnota řetězce. Informační sloupec je definován jako kategorický typ a má hodnotu:
Pokud je zadán, zkontroluje typ sloučení, který je uveden níže:
Příklad1: Sloučení dvou datových rámců na klíči
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['John', 'Parker', 'Smith', 'Parker'], 'subject_id':['sub1','sub2','sub4','sub6']}) right = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['William', 'Albert', 'Tony', 'Allen'], 'subject_id':['sub2','sub4','sub3','sub6']}) print (left) print (right)
Výstup
id Name subject_id 0 1 John sub1 1 2 Parker sub2 2 3 Smith sub4 3 4 Parker sub6 id Name subject_id 0 1 William sub2 1 2 Albert sub4 2 3 Tony sub3 3 4 Allen sub6
Příklad 2: Sloučení dvou datových rámců na více klíčích:
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left,right,on='id')
Výstup
id Name_x subject_id_x Name_y subject_id_y 0 1 John sub1 William sub2 1 2 Parker sub2 Albert sub4 2 3 Smith sub4 Tony sub3 3 4 Parker sub6 Allen sub6