Comment puis-je trouver efficacement les lignes uniques dans DataFrame1 qui ne sont pas dans DataFrame2 ?

Susan Sarandon
Libérer: 2024-11-21 07:28:10
original
633 Les gens l'ont consulté

How Can I Efficiently Find the Unique Rows in DataFrame1 That Are Not in DataFrame2?

Trouver la différence entre deux DataFrames

Dans l'analyse des données, l'identification des écarts entre les ensembles de données est cruciale. Supposons que vous ayez deux trames de données, df1 et df2, où df2 est un sous-ensemble de df1. Pour récupérer efficacement les lignes et colonnes uniques présentes dans df1 mais pas dans df2, vous pouvez exploiter le concept de différence définie.

Approche : Utilisation de pd.concat et drop_duplicates**

L'approche principale consiste à combiner les deux trames de données à l'aide de pd.concat et à éliminer ensuite les lignes en double ou des colonnes utilisant drop_duplicates. En définissant keep=False, cela garantit que seules les lignes ou colonnes qui existent uniquement dans df1 sont conservées.

df3 = pd.concat([df1, df2]).drop_duplicates(keep=False)
Copier après la connexion

Attention : gestion des doublons

Cependant, cela La méthode suppose que les deux trames de données elles-mêmes ne contiennent pas de valeurs en double. S’ils le font, le résultat peut être inexact. Pour résoudre ce problème, nous pouvons utiliser les approches alternatives suivantes :

Méthode 1 : Utiliser isin avec Tuple

Cette méthode consiste à convertir chaque ligne en un tuple en utilisant df.apply(tuple, 1) puis en vérifiant si les tuples sont présents dans df2 en utilisant df.apply(tuple, 1).isin(df2.apply(tuple, 1)). La trame de données résultante contiendra les lignes uniques de df1 qui ne sont pas dans df2.

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
Copier après la connexion

Méthode 2 : Fusion avec l'indicateur

Une autre approche consiste à fusionner df1 avec df2 en utilisant pd.merge avec un indicateur pour identifier les lignes qui existent uniquement dans df1. En utilisant la fonction lambda, nous pouvons filtrer les lignes où la colonne « _merge » n'est pas égale à « les deux ».

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge']!='both']
Copier après la connexion

Conclusion

En utilisant ces techniques, vous pouvez trouver efficacement la différence entre deux trames de données et obtenir des informations sur les points de données uniques présents dans chaque trame 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!

source:php.cn
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