"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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) ?

Publié le 2024-11-08
Parcourir:288

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

Comparer des trames de données : rechercher des lignes présentes dans l'une mais pas dans l'autre

Comparer des trames de données 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.

Initialement, les tentatives de comparaison des dataframes en utilisant df1 != df2 ont abouti à 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, regroupez le dataframe concaténé 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 du Fruit colonne.

Déclaration de sortie Cet article est reproduit le: 1729343178 S'il y a une contrefaçon, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3