logo

Pandas DataFrame.merge()

Pande sjediniti() definira se kao proces spajanja dvaju skupova podataka u jedan i usklađivanja redaka na temelju zajedničkih atributa ili stupaca. To je ulazna točka za sve standardne operacije spajanja baze podataka između DataFrame objekata:

Sintaksa:

 pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True) 

Parametri:

    pravo: DataFrame ili imenovana serija
    To je objekt koji se stapa s DataFrameom.kako: {'lijevo', 'desno', 'vanjski', 'unutarnji'}, zadano 'unutarnji'
    Vrsta spajanja koja će se izvršiti.
      lijevo:Koristi samo ključeve iz lijevog okvira, slično SQL lijevom vanjskom spoju; sačuvati poredak ključeva.pravo:Koristi samo ključeve iz desnog okvira, slično SQL desnom vanjskom spoju; sačuvati poredak ključeva.vanjski:Koristio je uniju ključeva iz oba okvira, slično SQL potpunom vanjskom spajanju; sortirati ključeve leksikografski.unutarnji:Koristi presjek ključeva iz oba okvira, slično SQL unutarnjem spajanju; sačuvajte redoslijed lijevih tipki.
    na: oznaka ili popis
    To su imena stupca ili razine indeksa kojima se treba pridružiti. Mora se pronaći iu lijevom iu desnom DataFramesu. Ako je uključeno Ništa i nema spajanja indeksa, tada je ovo zadano sjecište stupaca u oba DataFramea.
    ostaviti: oznaka ili popis, ili nalik nizu
    To su nazivi razine stupca ili indeksa iz lijevog DataFramea koji se koriste kao ključ. To može biti polje čija je duljina jednaka duljini DataFramea.pravo na: oznaka ili popis, ili nalik nizu
    To su nazivi razine stupaca ili indeksa iz desnog DataFramea koji se koriste kao ključevi. To može biti polje čija je duljina jednaka duljini DataFramea.lijevi_indeks: bool, zadano False
    Koristi indeks s lijevog DataFramea kao ključ(eve) pridruživanja, ako je istinito. U slučaju MultiIndex (hijerarhijskog), mnogi ključevi u drugom DataFrameu (bilo indeks ili neki stupci) trebali bi odgovarati broju razina.desni_indeks: bool, zadano False
    Koristi indeks s desnog DataFramea kao ključ pridruživanja. Ima istu upotrebu kao i left_index.vrsta: bool, zadano False
    Ako je True, razvrstava ključeve pridruživanja leksikografskim redoslijedom u rezultatu DataFrame. Inače, redoslijed ključeva za spajanje ovisi o vrsti spajanja (ključna riječ how).sufiksi: tuple od (str, str), default ('_x', '_y')
    Sufiksi se primjenjuju za preklapanje naziva stupaca u lijevom i desnom DataFrameu. Stupci koriste (False, False) vrijednosti za podizanje iznimke pri preklapanju.kopirati: bool, default True
    Ako je True, vraća kopiju DataFramea.
    U suprotnom, može izbjeći kopiju.indikator: bool ili str, zadano False
    Ako je True, dodaje stupac za izlaz DataFrame ' _sjediniti ' s informacijama o izvoru svakog retka. Ako se radi o nizu, stupac s informacijama o izvoru svakog retka bit će dodan izlaznom DataFrameu, a stupac će biti nazvan vrijednost niza. Informacijski stupac je definiran kao kategorički tip i uzima vrijednost:
      'samo_lijevo'za opažanja čiji se ključ spajanja pojavljuje samo 'lijevo' od DataFramea, dok,'samo_pravo'je definiran za opažanja u kojima se ključ spajanja pojavljuje samo 'desno' od DataFramea,'oba'ako se ključ spajanja promatranja nalazi u oba.
    potvrditi: str, izborno
    Ako je navedeno, provjerava tip spajanja koji je naveden u nastavku:
    • 'one_to_one' ili '1:1': Provjerava jesu li ključevi spajanja jedinstveni u lijevom i desnom skupu podataka.
    • 'one_to_many' ili '1:m': Provjerava jesu li ključevi spajanja jedinstveni samo u lijevom skupu podataka.
    • 'many_to_one' ili 'm:1': Provjerava jesu li ključevi spajanja jedinstveni samo u pravom skupu podataka.
    • 'many_to_many' ili 'm:m': Dopušteno je, ali ne rezultira provjerama.

Primjer1: Spajanje dva DataFrame-a na ključu

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

Izlaz

 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 

Primjer2: Spajanje dva DataFramesa na više ključeva:

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

Izlaz

 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