logo

Pandas DataFrame.merge()

Pandaer slå sammen() er definert som prosessen med å bringe de to datasettene sammen til ett og justere radene basert på vanlige attributter eller kolonner. Det er et inngangspunkt for alle standard databasesammenføyningsoperasjoner mellom DataFrame-objekter:

Syntaks:

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

Parametere:

    Ikke sant: DataFrame eller navngitt serie
    Det er et objekt som smelter sammen med DataFrame.hvordan: {'venstre', 'høyre', 'ytre', 'inner'}, standard 'indre'
    Type sammenslåing som skal utføres.
      venstre:Den bruker kun nøkler fra venstre ramme, likt en SQL venstre ytre sammenføyning; bevare nøkkelrekkefølge.Ikke sant:Den bruker bare nøkler fra høyre ramme, lik en SQL høyre ytre join; bevare nøkkelrekkefølge.ytre:Den brukte foreningen av nøkler fra begge rammer, lik en SQL full ytre join; sortere nøkler leksikografisk.indre:Den bruker skjæringspunktet mellom nøkler fra begge rammer, lik en indre SQL-kobling; bevare rekkefølgen til venstre tastene.
    på: etikett eller liste
    Det er en kolonne eller indeksnivå navn å bli med på. Den må finnes i både venstre og høyre DataFrames. Hvis på er Ingen og ikke slås sammen på indekser, vil dette som standard være skjæringspunktet mellom kolonnene i begge DataFrames.
    venstre_på: etikett eller liste, eller array-lignende
    Det er en kolonne eller indeksnivånavn fra venstre DataFrame som skal brukes som nøkkel. Det kan være en matrise med lengde lik lengden på DataFrame.rett på: etikett eller liste, eller array-lignende
    Det er et kolonne- eller indeksnivånavn fra høyre DataFrame som skal brukes som nøkler. Det kan være en matrise med lengde lik lengden på DataFrame.left_index : bool, standard False
    Den bruker indeksen fra venstre DataFrame som sammenføyningsnøkkel(er), hvis sant. Når det gjelder MultiIndex (hierarkisk), bør mange nøkler i den andre DataFrame (enten indeksen eller noen kolonner) samsvare med antall nivåer.right_index : bool, standard False
    Den bruker indeksen fra høyre DataFrame som sammenføyningsnøkkel. Den har samme bruk som left_index.sortere: bool, standard False
    Hvis True, sorterer den sammenføyningsnøklene i leksikografisk rekkefølge i resultatet DataFrame. Ellers avhenger rekkefølgen av sammenføyningsnøklene av sammenføyningstypen (hvordan nøkkelord).suffikser: tuppel av (str, str), standard ('_x', '_y')
    Det suffikser å gjelde for å overlappe kolonnenavnene i henholdsvis venstre og høyre DataFrame. Kolonnene bruker (False, False) verdier for å opprette et unntak ved overlapping.kopiere: bool, standard Sann
    Hvis True, returnerer den en kopi av DataFrame.
    Ellers kan den unngå kopien.indikator: bool eller str, standard False
    Hvis det er sant, legger det til en kolonne for å sende ut DataFrame ' _slå sammen ' med informasjon om kilden til hver rad. Hvis det er en streng, vil en kolonne med informasjon om kilden til hver rad bli lagt til dataframe, og kolonnen vil bli kalt verdien av en streng. Informasjonskolonnen er definert som en kategorisk type og den har verdien av:
      'kun venstre'for observasjonene hvis sammenslåingsnøkkel vises bare til venstre i DataFrame, mens,'right_only'er definert for observasjoner der sammenslåingsnøkkel bare vises til høyre for DataFrame,'både'hvis observasjonens flettenøkkel finnes i begge.
    validere: str, valgfritt
    Hvis det er spesifisert, sjekker det flettetypen som er gitt nedenfor:
    • 'one_to_one' eller '1:1': Den sjekker om flettenøkler er unike i både venstre og høyre datasett.
    • 'one_to_many' eller '1:m': Den sjekker om flettenøkler er unike i bare venstre datasett.
    • 'mange_til_en' eller 'm:1': Den sjekker om flettenøkler er unike i bare det riktige datasettet.
    • 'mange_til_mange' eller 'm:m': Det er tillatt, men resulterer ikke i kontroller.

Eksempel 1: Slå sammen to datarammer på en nøkkel

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

Produksjon

 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 

Eksempel 2: Slå sammen to DataFrames på flere nøkler:

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

Produksjon

 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