logo

Pandas DataFrame.merge()

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:

    že jo: DataFrame nebo pojmenované Series
    Je to objekt, který se spojí s DataFrame.jak: {'left', 'right', 'uter', 'inner'}, default 'inner'
    Typ sloučení, které se má provést.
      vlevo, odjet:Používá pouze klíče z levého rámce, podobně jako levé vnější spojení SQL; zachovat pořadí klíčů.že jo:Používá pouze klíče z pravého rámce, podobně jako pravé vnější spojení SQL; zachovat pořadí klíčů.vnější:Používalo spojení klíčů z obou rámců, podobně jako úplné vnější spojení SQL; třídit klíče lexikograficky.vnitřní:Používá průnik klíčů z obou rámců, podobně jako vnitřní spojení SQL; zachovat pořadí levých kláves.
    na: štítek nebo seznam
    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.vpravo_na: štítek nebo seznam, nebo jako pole
    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.levý_index: bool, výchozí False
    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í.pravý_index: bool, výchozí False
    Jako klíč spojení používá index z pravého DataFrame. Má stejné použití jako left_index.seřadit: bool, výchozí False
    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: n-tice z (str, str), výchozí ('_x', '_y')
    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í.kopírovat: bool, výchozí True
    Pokud je True, vrátí kopii DataFrame.
    V opačném případě se může vyhnout kopii.indikátor: bool nebo str, výchozí False
    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:
      'left_only'pro pozorování, jejichž slučovací klíč se objevuje pouze „vlevo“ v DataFrame, zatímco'right_only'je definován pro pozorování, ve kterých se slučovací klíč objevuje pouze „vpravo“ od DataFrame,'oba'pokud je slučovací klíč pozorování nalezen v obou.
    ověřit: str, nepovinné
    Pokud je zadán, zkontroluje typ sloučení, který je uveden níže:
    • '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.

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