logo

Pandas DataFrame.merge()

Pandas fusionner() est défini comme le processus consistant à rassembler les deux ensembles de données en un seul et à aligner les lignes en fonction des attributs ou des colonnes communs. Il s'agit d'un point d'entrée pour toutes les opérations de jointure de base de données standard entre des objets DataFrame :

Syntaxe:

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

Paramètres:

    droite: DataFrame ou série nommée
    C'est un objet qui fusionne avec le DataFrame.comment: {'gauche', 'droite', 'externe', 'intérieur'}, 'intérieur' par défaut
    Type de fusion à effectuer.
      gauche:Il utilise uniquement les clés du cadre de gauche, similaire à une jointure externe gauche SQL ; préserver l'ordre des clés.droite:Il utilise uniquement les clés du cadre droit, similaire à une jointure externe droite SQL ; préserver l'ordre des clés.extérieur:Il utilisait l'union des clés des deux frames, similaire à une jointure externe complète SQL ; trier les clés lexicographiquement.intérieur:Il utilise l'intersection des clés des deux cadres, similaire à une jointure interne SQL ; conserver l’ordre des touches de gauche.
    sur: étiquette ou liste
    Il s'agit d'une colonne ou d'un nom de niveau d'index sur lequel se joindre. Il doit être trouvé dans les DataFrames gauche et droit. Si on est None et ne fusionne pas sur les index, la valeur par défaut est l'intersection des colonnes dans les deux DataFrames.
    à gauche sur: étiquette ou liste, ou en forme de tableau
    Il s'agit d'un nom de colonne ou de niveau d'index du DataFrame gauche à utiliser comme clé. Il peut s'agir d'un tableau d'une longueur égale à la longueur du DataFrame.right_on : étiquette ou liste, ou en forme de tableau
    Il s'agit d'un nom de colonne ou de niveau d'index du DataFrame droit à utiliser comme clés. Il peut s'agir d'un tableau d'une longueur égale à la longueur du DataFrame.index_gauche : bool, faux par défaut
    Il utilise l'index du DataFrame gauche comme clé(s) de jointure, si vrai. Dans le cas de MultiIndex (hiérarchique), de nombreuses clés de l'autre DataFrame (soit l'index, soit certaines colonnes) doivent correspondre au nombre de niveaux.index_droit : bool, faux par défaut
    Il utilise l'index du DataFrame droit comme clé de jointure. Il a le même usage que left_index.trier: bool, faux par défaut
    Si True, il trie les clés de jointure par ordre lexicographique dans le DataFrame résultat. Sinon, l'ordre des clés de jointure dépend du type de jointure (mot-clé how).suffixes : tuple du (str, str), par défaut ('_x', '_y')
    Il s'agit de suffixes à appliquer pour chevaucher les noms de colonnes dans le DataFrame gauche et droit, respectivement. Les colonnes utilisent des valeurs (False, False) pour déclencher une exception en cas de chevauchement.copie: bool, vrai par défaut
    Si True, il renvoie une copie du DataFrame.
    Sinon, cela peut éviter la copie.indicateur: bool ou str, valeur par défaut False
    Si vrai, il ajoute une colonne pour afficher le DataFrame ' _fusionner ' avec des informations sur la source de chaque ligne. S'il s'agit d'une chaîne, une colonne contenant des informations sur la source de chaque ligne sera ajoutée au DataFrame de sortie et la colonne sera nommée valeur d'une chaîne. La colonne d'informations est définie comme un type catégoriel et prend la valeur :
      'gauche_seulement'pour les observations dont la clé de fusion apparaît uniquement à « gauche » du DataFrame, alors que,'droit_seulement'est défini pour les observations dans lesquelles la clé de fusion apparaît uniquement à « droite » du DataFrame,'les deux'si la clé de fusion de l'observation se trouve dans les deux.
    valider: chaîne, facultatif
    S'il est spécifié, il vérifie le type de fusion indiqué ci-dessous :
    • « one_to_one » ou « 1 : 1 » : il vérifie si les clés de fusion sont uniques dans les ensembles de données gauche et droit.
    • 'one_to_many' ou '1:m' : il vérifie si les clés de fusion sont uniques uniquement dans l'ensemble de données de gauche.
    • 'many_to_one' ou 'm:1' : il vérifie si les clés de fusion sont uniques uniquement dans le bon ensemble de données.
    • 'many_to_many' ou 'm:m' : C'est autorisé, mais n'entraîne pas de contrôles.

Exemple 1 : fusionner deux DataFrames sur une clé

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

Sortir

 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 : fusionner deux DataFrames sur plusieurs clés :

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

Sortir

 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