logo

Panda's DataFrame.merge()

Panda's samenvoegen() wordt gedefinieerd als het proces van het samenbrengen van de twee datasets tot één en het uitlijnen van de rijen op basis van de gemeenschappelijke attributen of kolommen. Het is een toegangspunt voor alle standaard database-join-bewerkingen tussen DataFrame-objecten:

Syntaxis:

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

Parameters:

    rechts: DataFrame of benoemde serie
    Het is een object dat samenvoegt met het DataFrame.Hoe: {'links', 'rechts', 'buiten', 'binnen'}, standaard 'binnen'
    Type samenvoeging dat moet worden uitgevoerd.
      links:Het gebruikt alleen sleutels uit het linkerframe, vergelijkbaar met een SQL left outside join; sleutelvolgorde behouden.rechts:Het gebruikt alleen sleutels uit het rechterframe, vergelijkbaar met een SQL right outside join; sleutelvolgorde behouden.buitenste:Het gebruikte de combinatie van sleutels van beide frames, vergelijkbaar met een volledige buitenste join van SQL; sorteer sleutels lexicografisch.innerlijke:Het gebruikt de kruising van sleutels uit beide frames, vergelijkbaar met een SQL inner join; behoud de volgorde van de linkertoetsen.
    op: etiket of lijst
    Het zijn namen op kolom- of indexniveau waaraan u kunt deelnemen. Het moet worden gevonden in zowel de linker als de rechter DataFrames. Als Aan Geen is en er geen indexen worden samengevoegd, wordt dit standaard ingesteld op het snijpunt van de kolommen in beide DataFrames.
    links_aan: label of lijst, of array-achtig
    Het zijn kolom- of indexniveaunamen uit het linker DataFrame die als sleutel moeten worden gebruikt. Het kan een array zijn met een lengte die gelijk is aan de lengte van het DataFrame.rechts_aan: label of lijst, of array-achtig
    Het zijn kolom- of indexniveaunamen uit het rechter DataFrame die als sleutels kunnen worden gebruikt. Het kan een array zijn met een lengte die gelijk is aan de lengte van het DataFrame.linker_index: bool, standaard False
    Het gebruikt de index van het linker DataFrame als de join-sleutel(s), indien waar. In het geval van MultiIndex (hiërarchisch) moeten veel sleutels in het andere DataFrame (de index of sommige kolommen) overeenkomen met het aantal niveaus.juiste_index: bool, standaard False
    Het gebruikt de index van het rechter DataFrame als de join-sleutel. Het heeft hetzelfde gebruik als de left_index.soort: bool, standaard False
    Indien True, sorteert het de join-sleutels in lexicografische volgorde in het resultaat DataFrame. Anders hangt de volgorde van de join-sleutels af van het join-type (hoe trefwoord).achtervoegsels: tupel van de (str, str), standaard ('_x', '_y')
    Er moeten achtervoegsels worden toegepast om de kolomnamen in respectievelijk het linker en rechter DataFrame te overlappen. De kolommen gebruiken waarden (False, False) om een ​​uitzondering op overlapping te genereren.kopiëren: bool, standaard Waar
    Indien True, retourneert het een kopie van het DataFrame.
    Anders kan het de kopie vermijden.indicator: bool of str, standaard False
    Indien waar, wordt er een kolom toegevoegd aan de uitvoer van DataFrame ' _samenvoegen ' met informatie over de bron van elke rij. Als het een tekenreeks is, wordt een kolom met informatie over de bron van elke rij toegevoegd aan de uitvoer van DataFrame, en krijgt de kolom de naam waarde van een tekenreeks. De informatiekolom wordt gedefinieerd als een categorisch type en heeft de waarde van:
      'alleen_links'voor de waarnemingen waarvan de samenvoegsleutel alleen 'links' van het DataFrame verschijnt, terwijl,'right_only'is gedefinieerd voor observaties waarin de samenvoegsleutel alleen 'rechts' van het DataFrame verschijnt,'beide'als de samenvoegsleutel van de waarneming in beide wordt gevonden.
    valideren: str, optioneel
    Als dit is opgegeven, wordt het samenvoegingstype gecontroleerd dat hieronder wordt vermeld:
    • 'one_to_one' of '1:1': Het controleert of samenvoegsleutels uniek zijn in zowel de linker als de rechter dataset.
    • 'one_to_many' of '1:m': Het controleert of samenvoegsleutels uniek zijn in alleen de linker dataset.
    • 'many_to_one' of 'm:1': Het controleert of samenvoegsleutels uniek zijn in alleen de juiste dataset.
    • 'many_to_many' of 'm:m': Het is toegestaan, maar leidt niet tot controles.

Voorbeeld1: Voeg twee DataFrames samen op een sleutel

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

Uitvoer

 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 

Voorbeeld 2: voeg twee DataFrames op meerdere sleutels samen:

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

Uitvoer

 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