logo

Pandos DataFrame.merge()

Pandos sujungti () apibrėžiamas kaip dviejų duomenų rinkinių sujungimo į vieną ir eilučių sulygiavimo procesas pagal bendrus atributus arba stulpelius. Tai įvesties taškas visoms standartinėms duomenų bazės prisijungimo operacijoms tarp DataFrame objektų:

Sintaksė:

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

Parametrai:

    dešinėje: DataFrame arba pavadinta Serija
    Tai objektas, kuris susilieja su DataFrame.kaip: {'left', 'right', 'outer', 'inner'}, default 'inner'
    Atliekamo sujungimo tipas.
      liko:Jis naudoja tik kairiojo rėmelio klavišus, panašius į SQL kairįjį išorinį sujungimą; išsaugoti raktų tvarką.dešinėje:Jis naudoja tik raktus iš dešiniojo rėmelio, panašiai kaip SQL dešiniajame išoriniame sujungime; išsaugoti raktų tvarką.išorinis:Jis naudojo abiejų kadrų raktų jungtį, panašią į SQL pilną išorinį sujungimą; rūšiuoti raktus leksikografiškai.vidinis:Jis naudoja abiejų kadrų raktų sankirtą, panašią į SQL vidinį sujungimą; išsaugoti kairiųjų klavišų tvarką.
    ant: etiketė arba sąrašas
    Tai yra stulpelio arba indekso lygio pavadinimai, prie kurių reikia prisijungti. Jį reikia rasti ir kairėje, ir dešinėje duomenų rėmeliuose. Jei įjungta yra „Nėra“ ir nesujungiama su indeksais, tada pagal nutylėjimą nustatoma abiejų duomenų rėmelių stulpelių sankirta.
    left_on: etiketė arba sąrašas, arba kaip masyvas
    Tai yra stulpelio arba indekso lygio pavadinimai iš kairiojo DataFrame, kuriuos reikia naudoti kaip raktą. Tai gali būti masyvas, kurio ilgis lygus DataFrame ilgiui.teisingai: etiketė arba sąrašas, arba kaip masyvas
    Tai yra stulpelio arba indekso lygio pavadinimai iš dešiniojo „DataFrame“, naudojami kaip raktai. Tai gali būti masyvas, kurio ilgis lygus DataFrame ilgiui.left_index : bool, numatytasis False
    Jis naudoja rodyklę iš kairiojo DataFrame kaip sujungimo raktą (-us), jei tiesa. MultiIndex (hierarchinio) atveju daugelis raktų kitame DataFrame (indekse arba kai kuriuose stulpeliuose) turi atitikti lygių skaičių.dešinysis_indeksas: bool, numatytasis False
    Jis naudoja indeksą iš dešiniojo „DataFrame“ kaip prisijungimo raktą. Jis naudojamas taip pat kaip ir left_index.Rūšiuoti: bool, numatytasis False
    Jei „True“, rezultato „DataFrame“ sujungimo raktai surūšiuojami leksikografine tvarka. Kitu atveju sujungimo raktų tvarka priklauso nuo sujungimo tipo (kaip raktinio žodžio).priesagos: eilė (str, str), numatytoji ('_x', '_y')
    Priesagos taikyti, kad sutaptų stulpelių pavadinimai atitinkamai kairiajame ir dešiniajame duomenų rėmelyje. Stulpeliai naudoja (False, False) reikšmes, kad iškeltų išimtį dėl persidengimo.kopija: bool, numatytasis True
    Jei „True“, jis grąžina „DataFrame“ kopiją.
    Priešingu atveju jis gali išvengti kopijavimo.indikatorius: bool arba str, numatytasis False
    Jei „True“, jis prideda stulpelį, kad išvestų „DataFrame“ _sujungti “ su informacija apie kiekvienos eilutės šaltinį. Jei tai yra eilutė, prie išvesties DataFrame bus pridėtas stulpelis su informacija apie kiekvienos eilutės šaltinį, o stulpelis bus pavadintas eilutės verte. Informacijos stulpelis apibrėžiamas kaip kategorinis tipas ir jo reikšmė:
      „tik kairėje“stebėjimams, kurių sujungimo raktas rodomas tik duomenų rėmelio „kairėje“, tuo tarpu„tik_teisingai“yra apibrėžtas stebėjimams, kuriuose sujungimo raktas rodomas tik duomenų rėmelio „dešinėje“,'abu'jei abiejuose randamas stebėjimo sujungimo raktas.
    patvirtinti: str, neprivaloma
    Jei jis nurodytas, jis patikrina toliau pateiktą sujungimo tipą:
    • „One_to_one“ arba „1:1“: patikrinama, ar sujungimo raktai yra unikalūs tiek kairiajame, tiek dešiniajame duomenų rinkiniuose.
    • „one_to_many“ arba „1:m“: patikrinama, ar sujungimo raktai yra unikalūs tik kairiajame duomenų rinkinyje.
    • „many_to_one“ arba „m:1“: tikrina, ar sujungimo raktai yra unikalūs tik tinkamame duomenų rinkinyje.
    • 'many_to_many' arba 'm:m': tai leidžiama, bet netaikoma.

1 pavyzdys: sujunkite du rakto duomenų rėmelius

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

Išvestis

 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 

2 pavyzdys: sujunkite du duomenų rėmelius keliuose raktuose:

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

Išvestis

 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