logo

Pandas DataFrame.merge()

Pandes combinar () es defineix com el procés d'unir els dos conjunts de dades en un sol i d'alinear les files en funció dels atributs o columnes comuns. És un punt d'entrada per a totes les operacions estàndard d'unió de bases de dades entre objectes DataFrame:

Sintaxi:

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

Paràmetres:

    dret: DataFrame o sèrie anomenada
    És un objecte que es fusiona amb el DataFrame.com: {'esquerra', 'dreta', 'exterior', 'interior'}, 'interior' per defecte
    Tipus de fusió a realitzar.
      esquerra:Utilitza només les claus del marc esquerre, similar a una unió externa esquerra SQL; preservar l'ordre de les claus.dret:Utilitza només les claus del marc dret, similar a una unió externa dreta SQL; preservar l'ordre de les claus.exterior:Va utilitzar la unió de claus d'ambdues fotogrames, similar a una unió externa completa SQL; ordenar les claus lexicogràficament.interior:Utilitza la intersecció de claus d'ambdós fotogrames, similar a una unió interna SQL; conservar l'ordre de les tecles esquerres.
    a: etiqueta o llista
    És una columna o noms de nivell d'índex per unir-se. S'ha de trobar tant als DataFrames esquerre com dret. Si activat és Cap i no es combina en índexs, per defecte és la intersecció de les columnes en ambdós DataFrames.
    left_on: etiqueta o llista, o com a matriu
    És un nom de nivell de columna o índex del DataFrame esquerre per utilitzar-lo com a clau. Pot ser una matriu amb una longitud igual a la longitud del DataFrame.dret_a: etiqueta o llista, o com a matriu
    Es tracta de noms de nivell de columna o índex del DataFrame dret per utilitzar-los com a claus. Pot ser una matriu amb una longitud igual a la longitud del DataFrame.índex_esquerra: bool, per defecte Fals
    Utilitza l'índex del DataFrame esquerre com a clau(s) d'unió, si és cert. En el cas de MultiIndex (jeràrquic), moltes claus de l'altre DataFrame (ja sigui l'índex o algunes columnes) haurien de coincidir amb el nombre de nivells.right_index: bool, per defecte Fals
    Utilitza l'índex del DataFrame dret com a clau d'unió. Té el mateix ús que el left_index.ordenar: bool, per defecte Fals
    Si és True, ordena les claus d'unió en ordre lexicogràfic al DataFrame del resultat. En cas contrari, l'ordre de les claus d'unió depèn del tipus d'unió (paraula clau com).sufixos: tupla de (str, str), per defecte ('_x', '_y')
    Els sufixos s'apliquen per superposar els noms de les columnes al DataFrame esquerre i dret, respectivament. Les columnes utilitzen valors (fals, fals) per generar una excepció en la superposició.còpia: bool, per defecte True
    Si és True, retorna una còpia del DataFrame.
    En cas contrari, pot evitar la còpia.indicador: bool o str, per defecte Fals
    Si és cert, afegeix una columna a la sortida de DataFrame ' _fusionar ' amb informació sobre la font de cada fila. Si es tracta d'una cadena, s'afegirà una columna amb informació sobre l'origen de cada fila a la sortida de DataFrame i la columna s'anomenarà valor d'una cadena. La columna d'informació es defineix com a tipus categòric i pren el valor de:
      'només_esquerra'per a les observacions la clau de combinació de les quals només apareix a 'esquerra' del DataFrame, mentre que,'només_dret'es defineix per a observacions en què la clau de combinació només apareix a la 'dreta' del DataFrame,'tots dos'si la clau de combinació de l'observació es troba en tots dos.
    validar: str, opcional
    Si s'especifica, comprova el tipus de combinació que es mostra a continuació:
    • 'one_to_one' o '1:1': comprova si les claus de combinació són úniques tant al conjunt de dades esquerre com al dret.
    • 'one_to_many' o '1:m': comprova si les claus de combinació són úniques només al conjunt de dades esquerre.
    • 'many_to_one' o 'm:1': comprova si les claus de combinació són úniques només en el conjunt de dades correcte.
    • 'many_to_many' o 'm:m': està permès, però no provoca comprovacions.

Exemple 1: fusioneu dos DataFrames en una clau

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

Sortida

 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 

Exemple 2: fusioneu dos DataFrames en diverses claus:

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

Sortida

 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