Maison >développement back-end >Tutoriel Python >Comment comparer les DataFrames pour les différences dans les lignes ?

Comment comparer les DataFrames pour les différences dans les lignes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-19 21:13:29279parcourir

How to Compare DataFrames for Differences in Rows?

Comparaison de DataFrames pour les différences dans les lignes

Lors de la comparaison de deux dataframes avec des lignes et des colonnes identiques, l'opération de comparaison simple (df1 != df2) est suffisant. Cependant, si les trames de données ont des ensembles de lignes différents, une approche différente est nécessaire pour identifier les différences.

Concat, Group et Filter

Une méthode pour comparer les trames de données pour Les différences de lignes consistent à les concaténer, à les regrouper par colonnes et à filtrer les lignes uniques. Le code suivant illustre cela :

<code class="python">df = pd.concat([df1, df2])
df = df.reset_index(drop=True)
df_gpby = df.groupby(list(df.columns))
idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]
result = df.reindex(idx)</code>

Le dataframe concaténé (df) est regroupé par toutes ses colonnes (df_gpby). La méthode 'groups.values()' renvoie un itérable de tuples, où chaque tuple représente les indices de lignes uniques. Le filtrage des tuples par longueur (len(x) == 1) identifie les lignes qui existent dans une seule trame de données. Enfin, la réindexation du dataframe avec les indices filtrés (idx) produit un dataframe contenant les différences de lignes.

Exemple de sortie

Utilisation des exemples de dataframes fournis :

>>> result
         Date   Fruit   Num   Color
9  2013-11-25  Orange   8.6  Orange
8  2013-11-25   Apple  22.1     Red

Cette sortie affiche les lignes qui sont dans df2 mais pas dans df1.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn