Comment effectuer une anti-jointure dans Pandas



Un anti-jointure vous permet de renvoyer toutes les lignes d’un ensemble de données qui n’ont pas de valeurs correspondantes dans un autre ensemble de données.

Vous pouvez utiliser la syntaxe suivante pour effectuer une anti-jointure entre deux DataFrames pandas :

outer = df1.merge(df2, how='outer', indicator=True)

anti_join = outer[(outer._merge=='left_only')].drop('_merge', axis=1)

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : effectuer une anti-jointure dans Pandas

Supposons que nous ayons les deux DataFrames pandas suivants :

import pandas as pd

#create first DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
                    'points': [18, 22, 19, 14, 30]})

print(df1)

  team  points
0    A      18
1    B      22
2    C      19
3    D      14
4    E      30

#create second DataFrame
df2 = pd.DataFrame({'team': ['A', 'B', 'C', 'F', 'G'],
                    'points': [18, 22, 19, 22, 29]})

print(df2)

  team  points
0    A      18
1    B      22
2    C      19
3    F      22
4    G      29

Nous pouvons utiliser le code suivant pour renvoyer toutes les lignes du premier DataFrame qui n’ont pas d’équipe correspondante dans le deuxième DataFrame :

#perform outer join
outer = df1.merge(df2, how='outer', indicator=True)

#perform anti-join
anti_join = outer[(outer._merge=='left_only')].drop('_merge', axis=1)

#view results
print(anti_join)

  team  points
3    D      14
4    E      30

Nous pouvons voir qu’il y a exactement deux équipes du premier DataFrame qui n’ont pas de nom d’équipe correspondant dans le deuxième DataFrame.

L’anti-jointure a fonctionné comme prévu.

Le résultat final est un DataFrame qui contient uniquement les lignes où le nom de l’équipe appartient au premier DataFrame mais pas au deuxième DataFrame.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Comment faire une jointure interne chez Pandas
Comment faire une jointure à gauche dans Pandas
Comment faire une jointure croisée dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *