logo

Pandas DataFrame.merge()

Pande združi () je definiran kot postopek združevanja dveh nizov podatkov v enega in poravnave vrstic na podlagi skupnih atributov ali stolpcev. Je vstopna točka za vse standardne operacije združevanja baze podatkov med objekti DataFrame:

Sintaksa:

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

Parametri:

    prav: DataFrame ali poimenovana serija
    Je objekt, ki se združi z DataFrame.kako: {'levo', 'desno', 'zunanji', 'notranji'}, privzeto 'notranji'
    Vrsta združitve, ki bo izvedena.
      levo:Uporablja le ključe iz levega okvirja, podobno kot levo zunanje združevanje SQL; ohranite vrstni red ključev.prav:Uporablja le ključe iz desnega okvirja, podobno kot desno zunanje združevanje SQL; ohranite vrstni red ključev.zunanji:Uporabil je združitev ključev iz obeh okvirjev, podobno kot polno zunanje združevanje SQL; razvrstite ključe leksikografsko.notranji:Uporablja presečišče ključev iz obeh okvirjev, podobno kot notranje združevanje SQL; ohrani vrstni red levih tipk.
    na: oznako ali seznam
    Gre za imena ravni stolpcev ali indeksov, ki se jim pridružite. Najti ga je treba v levem in desnem podatkovnem okviru. Če je on nastavljen na None in se indeksi ne združujejo, potem je to privzeto presečišče stolpcev v obeh podatkovnih okvirih.
    levo_na: oznaka ali seznam ali podobno matriki
    To so imena ravni stolpcev ali indeksov iz levega DataFrame, ki se uporabljajo kot ključ. Lahko je matrika z dolžino, ki je enaka dolžini DataFrame.kar tako naprej: oznaka ali seznam ali podobno matriki
    To so imena ravni stolpcev ali indeksov iz desnega DataFrame, ki se uporabljajo kot ključi. Lahko je matrika z dolžino, ki je enaka dolžini DataFrame.levi_indeks: bool, privzeto False
    Uporablja indeks iz levega podatkovnega okvira kot ključ(e) za združevanje, če je res. V primeru MultiIndex (hierarhičnega) bi se morali številni ključi v drugem DataFrame (bodisi indeks ali nekateri stolpci) ujemati s številom ravni.desni_indeks: bool, privzeto False
    Kot ključ za združevanje uporablja indeks iz desnega DataFrame. Uporablja se enako kot levi_indeks.razvrsti: bool, privzeto False
    Če je True, razvrsti združevalne ključe v leksikografskem vrstnem redu v rezultatu DataFrame. V nasprotnem primeru je vrstni red ključev za združevanje odvisen od vrste združevanja (ključna beseda how).pripone: tuple od (str, str), privzeto ('_x', '_y')
    Pripone za uporabo za prekrivanje imen stolpcev v levem in desnem DataFrame. Stolpci uporabljajo vrednosti (False, False) za sprožitev izjeme pri prekrivanju.kopirati: bool, privzeto True
    Če je True, vrne kopijo DataFrame.
    V nasprotnem primeru se lahko izogne ​​kopiji.indikator: bool ali str, privzeto False
    Če je True, doda stolpec za izpis DataFrame ' _združiti ' z informacijami o izvoru vsake vrstice. Če je to niz, bo stolpec z informacijami o izvoru vsake vrstice dodan v izhod DataFrame, stolpec pa bo poimenovan vrednost niza. Stolpec z informacijami je opredeljen kot kategorični tip in ima vrednost:
      'samo_levo'za opazovanja, katerih ključ za združevanje se pojavi samo na 'levi' strani DataFrame, medtem ko je'desno_only'je definiran za opazovanja, pri katerih se združitveni ključ pojavi samo na 'desni' strani DataFrame,'oboje'če je ključ za spajanje opazovanja najden v obeh.
    potrdi: str, neobvezno
    Če je naveden, preveri vrsto spajanja, ki je podana spodaj:
    • 'one_to_one' ali '1:1': Preveri, ali so združitveni ključi edinstveni v levem in desnem nizu podatkov.
    • 'one_to_many' ali '1:m': Preveri, ali so združitveni ključi edinstveni samo v levem nizu podatkov.
    • 'many_to_one' ali 'm:1': Preveri, ali so združitveni ključi edinstveni samo v pravem nizu podatkov.
    • 'many_to_many' ali 'm:m': dovoljeno je, vendar ne povzroči preverjanj.

Primer1: Združite dva podatkovna okvirja na ključ

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

Izhod

 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 

Primer2: Združite dva podatkovna okvira na več ključih:

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

Izhod

 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