logo

Pandas DataFrame.merge()

Pandaer fusionere() er defineret som processen med at bringe de to datasæt sammen til ét og justere rækkerne baseret på de fælles attributter eller kolonner. Det er et indgangspunkt for alle standard databasesammenføjningsoperationer mellem 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) 

Parametre:

    højre: DataFrame eller navngivne serier
    Det er et objekt, der smelter sammen med DataFrame.hvordan: {'venstre', 'højre', 'ydre', 'indre'}, standard 'indre'
    Type fletning, der skal udføres.
      venstre:Den bruger kun nøgler fra venstre ramme, svarende til en SQL venstre ydre joinforbindelse; bevare nøgleorden.højre:Den bruger kun nøgler fra den højre ramme, svarende til en SQL højre ydre join; bevare nøgleorden.ydre:Den brugte foreningen af ​​nøgler fra begge rammer, svarende til en SQL fuld ydre join; sortere nøgler leksikografisk.indre:Det bruger skæringspunktet mellem nøgler fra begge rammer, svarende til en indre SQL-forbindelse; bevare rækkefølgen af ​​venstre taster.
    på: etiket eller liste
    Det er et kolonne- eller indeksniveau navne at deltage på. Det skal findes i både venstre og højre DataFrames. Hvis On er Ingen og ikke flettes på indekser, så er dette standard til skæringspunktet mellem kolonnerne i begge DataFrames.
    efterladt på: etiket eller liste, eller array-lignende
    Det er et kolonne- eller indeksniveaunavne fra venstre DataFrame, der skal bruges som nøgle. Det kan være et array med en længde svarende til længden af ​​DataFrame.lige på: etiket eller liste, eller array-lignende
    Det er et kolonne- eller indeksniveaunavne fra den højre DataFrame, der skal bruges som nøgler. Det kan være et array med en længde svarende til længden af ​​DataFrame.venstre_indeks: bool, standard Falsk
    Den bruger indekset fra venstre DataFrame som joinnøgle(r), hvis sandt. I tilfælde af MultiIndex (hierarkisk), skal mange nøgler i den anden DataFrame (enten indekset eller nogle kolonner) matche antallet af niveauer.højre_indeks: bool, standard Falsk
    Den bruger indekset fra højre DataFrame som joinnøgle. Det har samme brug som left_index.sortere: bool, standard Falsk
    Hvis True, sorterer den joinnøglerne i leksikografisk rækkefølge i resultatet DataFrame. Ellers afhænger rækkefølgen af ​​joinnøglerne af jointypen (hvordan nøgleordet).suffikser: tuple af (str, str), standard ('_x', '_y')
    Det suffikser at anvende for at overlappe kolonnenavnene i henholdsvis venstre og højre DataFrame. Kolonnerne bruger (False, False) værdier til at rejse en undtagelse ved overlapning.kopi: bool, standard Sand
    Hvis det er sandt, returnerer det en kopi af DataFrame.
    Ellers kan den undgå kopien.indikator: bool eller str, standard Falsk
    Hvis det er sandt, tilføjer det en kolonne til output DataFrame ' _fusionere ' med oplysninger om kilden til hver række. Hvis det er en streng, vil en kolonne med information om kilden til hver række blive tilføjet til output DataFrame, og kolonnen vil blive navngivet værdien af ​​en streng. Informationskolonnen er defineret som en kategorisk type, og den har værdi af:
      'kun venstre'for de observationer, hvis flettenøgle kun vises i 'venstre' af DataFrame, hvorimod,'kun_højre'er defineret for observationer, hvor flettenøgle kun vises i 'højre' for DataFrame,'begge'hvis observationens flettenøgle findes i dem begge.
    validere: str, valgfrit
    Hvis det er angivet, tjekker det flettetypen, der er angivet nedenfor:
    • 'one_to_one' eller '1:1': Den kontrollerer, om flettenøgler er unikke i både venstre og højre datasæt.
    • 'one_to_many' eller '1:m': Den kontrollerer, om flettenøgler kun er unikke i det venstre datasæt.
    • 'mange_til_en' eller 'm:1': Den kontrollerer, om flettenøgler kun er unikke i det rigtige datasæt.
    • 'mange_til_mange' eller 'm:m': Det er tilladt, men resulterer ikke i kontrol.

Eksempel 1: Flet to DataFrames på en nøgle

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

Produktion

 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: Flet to DataFrames på flere nøgler:

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

Produktion

 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