Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Pandas : Comment comparer deux DataFrames ligne par ligne



Vous pouvez utiliser les méthodes suivantes pour comparer deux DataFrames pandas ligne par ligne :

Méthode 1 : comparer les DataFrames et conserver uniquement les lignes présentant des différences

df_diff = df1.compare(df2, keep_equal=True, align_axis=0)

Méthode 2 : comparer les DataFrames et conserver toutes les lignes

df_diff = df1.compare(df2, keep_equal=True, keep_shape=True, align_axis=0) 

Les exemples suivants montrent comment utiliser chaque méthode avec les DataFrames pandas suivants :

import pandas as pd

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

print(df1)

  team  points  assists
0    A      18        5
1    B      22        7
2    C      19        7
3    D      14        9

#create second DataFrame
df2 = pd.DataFrame({'team': ['A', 'B', 'C', 'E'],
                    'points': [18, 30, 19, 20],
                    'assists': [5, 7, 7, 9]})

print(df2)

  team  points  assists
0    A      18        5
1    B      30        7
2    C      19        7
3    E      20        9

Exemple 1 : comparer les DataFrames et conserver uniquement les lignes présentant des différences

Le code suivant montre comment comparer les deux DataFrames ligne par ligne et conserver uniquement les lignes qui présentent des différences dans au moins une colonne :

#compare DataFrames and only keep rows with differences
df_diff = df1.compare(df2, keep_equal=True, align_axis=0)

#view results
print(df_diff)

        team  points
1 self     B      22
  other    B      30
3 self     D      14
  other    E      20

Nous pouvons voir que les DataFrames ont deux lignes différentes.

En particulier, nous pouvons voir que les lignes aux positions d’index 1 et 3 de chaque DataFrame ont des valeurs différentes dans au moins une colonne.

Les valeurs de la ligne self affichent les valeurs du premier DataFrame tandis que les valeurs de l’ autre ligne affichent les valeurs du deuxième DataFrame.

Par exemple, on peut voir :

  • La ligne en position d’index 1 du premier DataFrame contient B dans la colonne équipe et 22 dans la colonne points.
  • La ligne en position d’index 1 du deuxième DataFrame contient B dans la colonne équipe et 30 dans la colonne points.

Remarque : L’argument keep_equal=True indique aux pandas de conserver des valeurs égales. Sinon, les valeurs égales sont affichées sous forme de NaN.

Exemple 2 : comparer les DataFrames et conserver toutes les lignes

Le code suivant montre comment utiliser l’argument keep_shape=True pour comparer les deux DataFrames ligne par ligne et conserver toutes les lignes des DataFrames d’origine :

#compare DataFrames and keep all rows
df_diff = df1.compare(df2, keep_equal=True, keep_shape=True, align_axis=0)

#view results
print(df_diff)

        team  points  assists
0 self     A      18        5
  other    A      18        5
1 self     B      22        7
  other    B      30        7
2 self     C      19        7
  other    C      19        7
3 self     D      14        9
  other    E      20        9

Le DataFrame résultant contient toutes les lignes et colonnes des DataFrames d’origine.

Remarque n°1 : La fonction compare() suppose que les deux DataFrames ont les mêmes dimensions.

Remarque n°2 : Vous pouvez trouver la documentation complète de la fonction pandas compare() ici .

Ressources additionnelles

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

Pandas : comment comparer deux colonnes
Pandas : comment comparer trois colonnes
Pandas : comment comparer des colonnes dans deux DataFrames différents

Ajouter un commentaire

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