logo

Pandas DataFrame.merge()

Pandas sammanfoga() definieras som processen att sammanföra de två datamängderna till en och justera raderna baserat på de gemensamma attributen eller kolumnerna. Det är en ingångspunkt för alla vanliga databaskopplingsoperationer mellan DataFrame-objekt:

Syntax:

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

Parametrar:

    höger: DataFrame eller namngiven serie
    Det är ett objekt som smälter samman med DataFrame.hur: {'left', 'right', 'outer', 'inner'}, standard 'inre'
    Typ av sammanslagning som ska utföras.
      vänster:Den använder bara nycklar från den vänstra ramen, liknande en SQL vänster yttre koppling; bevara nyckelordningen.höger:Den använder bara nycklar från höger ram, liknande en SQL höger yttre koppling; bevara nyckelordningen.yttre:Den använde föreningen av nycklar från båda ramarna, liknande en SQL full yttre koppling; sortera nycklar lexikografiskt.inre:Den använder skärningspunkten mellan nycklar från båda ramarna, liknande en SQL inre join; bevara ordningen på de vänstra tangenterna.
    på: etikett eller lista
    Det är en kolumn eller indexnivånamn att gå med på. Det måste finnas i både vänster och höger DataFrames. Om på är Ingen och inte sammanfogas på index, så är detta standard till skärningspunkten mellan kolumnerna i båda DataFrames.
    kvar på: etikett eller lista, eller arrayliknande
    Det är en kolumn eller indexnivånamn från den vänstra DataFrame att använda som nyckel. Det kan vara en array med längden lika med längden på DataFrame.höger_på: etikett eller lista, eller arrayliknande
    Det är en kolumn eller indexnivånamn från den högra DataFrame att använda som nycklar. Det kan vara en array med längden lika med längden på DataFrame.left_index : bool, standard False
    Den använder indexet från den vänstra DataFrame som kopplingsnycklar, om sant. När det gäller MultiIndex (hierarkiskt) bör många nycklar i den andra DataFrame (antingen indexet eller några kolumner) matcha antalet nivåer.right_index : bool, standard False
    Den använder indexet från den högra DataFrame som kopplingsnyckel. Den har samma användning som left_index.sortera: bool, standard False
    Om True, sorterar den join-nycklarna i lexikografisk ordning i resultatet DataFrame. Annars beror ordningen på join-nycklarna på join-typen (hur nyckelordet).suffix: tuppel av (str, str), standard ('_x', '_y')
    Det suffix att tillämpa för att överlappa kolumnnamnen i vänster respektive höger DataFrame. Kolumnerna använder (False, False) värden för att skapa ett undantag vid överlappning.kopiera: bool, standard Sant
    Om det är sant returneras en kopia av DataFrame.
    Annars kan den undvika kopian.indikator: bool eller str, standard False
    Om det är sant lägger det till en kolumn för att mata ut DataFrame ' _sammanfoga ' med information om källan till varje rad. Om det är en sträng kommer en kolumn med information om källan för varje rad att läggas till i dataframe, och kolumnen kommer att få namnet värdet av en sträng. Informationskolumnen definieras som en kategorisk typ och den tar värdet av:
      'bara_vänster'för observationer vars sammanslagningsnyckel endast visas i 'vänster' om DataFrame, medan,'bara_rätt'definieras för observationer där sammanslagningsnyckeln endast visas till 'höger' om DataFrame,'både'om observationens sammanslagningsnyckel finns i båda.
    bekräfta: str, valfritt
    Om den är specificerad kontrollerar den sammanslagningstypen som anges nedan:
    • 'one_to_one' eller '1:1': Den kontrollerar om sammanslagningsnycklar är unika i både vänster och höger dataset.
    • 'one_to_many' eller '1:m': Den kontrollerar om sammanslagningsnycklar är unika endast i den vänstra datasetet.
    • 'many_to_one' eller 'm:1': Den kontrollerar om sammanslagningsnycklar är unika endast i rätt datauppsättning.
    • 'många_till_många' eller 'm:m': Det är tillåtet, men resulterar inte i kontroller.

Exempel 1: Slå samman två DataFrames på en nyckel

 # 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 

Exempel 2: Slå samman två DataFrames på flera nycklar:

 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