Maison  >  Article  >  développement back-end  >  Comment trouver les lignes présentes dans une trame de données mais pas dans une autre (en comparant df1 et df2) ?

Comment trouver les lignes présentes dans une trame de données mais pas dans une autre (en comparant df1 et df2) ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 21:07:03579parcourir

How to Find Rows Present in One Dataframe but Not in Another (Comparing df1 and df2)?

Comparer des dataframes : rechercher des lignes présentes dans l'une mais pas dans l'autre

Comparer des dataframes pour identifier les différences est crucial pour l'assurance qualité et la fusion des données. opérations. Dans ce cas, nous avons deux dataframes (df1 et df2) avec une structure spécifique et devons déterminer les lignes présentes dans df2 mais pas dans df1.

Au départ, les tentatives de comparaison des dataframes en utilisant df1 != df2 aboutissaient à une erreur. Cette approche ne fonctionne que pour les dataframes avec des lignes et des colonnes identiques. Pour trouver des différences symétriques, nous avons besoin d'une approche différente.

Une méthode consiste à concaténer les trames de données :

df = pd.concat([df1, df2])
df = df.reset_index(drop=True)

Ensuite, regrouper la trame de données concaténée par toutes les colonnes :

df_gpby = df.groupby(list(df.columns))

Ensuite, nous identifions les enregistrements uniques en obtenant les valeurs d'index là où une seule ligne existe :

idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]

En utilisant ces indices, nous pouvons filtrer la trame de données pour obtenir le résultat souhaité :

df.reindex(idx)

Cette approche fournit les lignes présentes dans df2 mais absentes dans df1 sur la base de la comparaison de l'index Date et de la colonne Fruit.

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