Maison  >  Article  >  développement back-end  >  Comment comparer deux trames de données et extraire les différences en fonction de colonnes spécifiques ?

Comment comparer deux trames de données et extraire les différences en fonction de colonnes spécifiques ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-19 21:14:02344parcourir

How to Compare Two Dataframes and Extract Differences Based on Specific Columns?

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!

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