Comparer deux dataframes et identifier les différences
Dans votre scénario, vous disposez de deux dataframes, df1 et df2, avec des structures et des indices de ligne identiques. Votre objectif est de déterminer quelles lignes existent dans df2 mais pas dans df1 en comparant leurs valeurs de date et de fruit.
Comparaison directe
L'approche consistant à utiliser df1 != df2 ne convient pas car il nécessite des trames de données étiquetées de manière identique. La suppression de l'index de date ne parvient pas non plus à résoudre le problème.
Concaténation et regroupement
Pour trouver les différences, vous pouvez concaténer les trames de données en une seule trame de données df :
<code class="python">import pandas as pd df = pd.concat([df1, df2]) df = df.reset_index(drop=True)</code>
Regroupez df par toutes ses colonnes pour identifier les enregistrements uniques :
<code class="python">df_gpby = df.groupby(list(df.columns))</code>
Filtrage des enregistrements uniques
Ensuite, récupérez les index des enregistrements uniques , qui sont ceux avec une taille de groupe de 1 :
<code class="python">idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]</code>
Enfin, vous pouvez utiliser ces indices pour filtrer la trame de données concaténée afin d'obtenir uniquement les lignes exclusives à df2 :
<code class="python">df.reindex(idx)</code>
Cela renverra une trame de données contenant les différences souhaitées :
Date Fruit Num Color 9 2013-11-25 Orange 8.6 Orange 8 2013-11-25 Apple 22.1 Red
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!