Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-19 21:14:02
original
467 Les gens l'ont consulté

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>
Copier après la connexion

Regroupez df par toutes ses colonnes pour identifier les enregistrements uniques :

<code class="python">df_gpby = df.groupby(list(df.columns))</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal