Maison  >  Article  >  développement back-end  >  Comment trouver efficacement la différence entre deux DataFrames Pandas ?

Comment trouver efficacement la différence entre deux DataFrames Pandas ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-22 06:14:09295parcourir

How to Efficiently Find the Difference Between Two Pandas DataFrames?

Comment trouver la différence entre deux blocs de données

Souvent, lorsque nous travaillons avec des données, nous pouvons avoir deux blocs de données qui contiennent des informations qui se chevauchent, mais contiennent également des lignes ou des colonnes uniques. Pour obtenir un bloc de données qui inclut uniquement les lignes et les colonnes présentes dans un bloc de données et pas dans l'autre, nous devons effectuer une opération de différence de bloc de données.

Pour y parvenir, nous pouvons utiliser la fonction drop_duplicates avec le paramètre keep=False, qui supprime efficacement toutes les lignes en double d'un bloc de données concaténé :

pd.concat([df1,df2]).drop_duplicates(keep=False)

Cependant, cette méthode suppose que les deux blocs de données sont exempts de des doublons. Si des doublons existent dans les trames de données d'origine, la méthode ci-dessus les supprimera par inadvertance. Pour gérer ce scénario, nous pouvons utiliser l'une des deux approches alternatives :

Méthode 1 : Utiliser isin avec des tuples

Cette méthode consiste à créer un tuple pour chaque ligne du trame de données, puis en utilisant isin pour vérifier si un tuple de df1 existe dans df2. Les lignes qui existent uniquement dans df1 sont conservées :

df1[~df1.apply(tuple,1).isin(df2.apply(tuple,1))]

Méthode 2 : Fusionner avec l'indicateur

En fusionnant les deux trames de données avec le paramètre indicateur comme True, nous pouvons créer une nouvelle colonne indiquant quelles lignes sont uniques à df1 ou df2. Les lignes uniques à df1 peuvent ensuite être filtrées en sélectionnant les lignes où la valeur de la colonne _merge est left_only :

df1.merge(df2,indicator = True, how='left').loc[lambda x : x['_merge']!='both']

En mettant en œuvre ces techniques, vous pouvez déterminer efficacement la différence entre deux trames de données, en garantissant que vous disposez d'un bloc de données contenant uniquement les informations uniques de chaque bloc de données.

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