0
votes

Comparez deux dataframes

J'ai deux dataframes comme ci-dessous: je veux comparer deux lignes de données à la ligne et si supposons que la ligne1 de DF1 ne soit pas égale à la ligne1 de DF2 Imprimer une erreur

df1

    A     B  
0   1     3
1   2     4 
2   3     5 
3   4     6 
4   5     7 

df2

    A     B  
0   1     3
1   2     4 
2   3     5 
3   4     5
4   5     7


1 commentaires

Vous pouvez comparer des cadres de données à l'aide de (df1 == DF2) .Toutez-vous (1), quelle est la sortie attendue?


3 Réponses :


1
votes

Avez-vous jetez un coup d'oeil au Documentation ?

df1[~df1.eq(df2)].dropna(how='all')

    A    B
3 NaN  6.0


2 commentaires

Je veux imprimer une erreur pour chaque ligne où cette ligne a une valeur inégale. Donc, dans ce cas, nous devons parcourir chaque rangée


Non, vous ne faites pas itérale à travers un Pandas DataFrame Row sage, qui ne l'utilise pas correctement



0
votes

J'aime la réponse de @ Aws_apprentice. Mais, étant donné que vous avez demandé à "imprimer une erreur", considérez également pandas.testing.assert_frame_equal (DOCS) , qui soulèvera une exception assertionError si Les dataframes ne sont pas identiques et vous donnent une sortie de diagnostic.


0 commentaires

0
votes

Vous devriez vérifier Andy Hayden's Répondre ici: Différence de sortie de deux pandas DataFrames côte à côte - Sélection de la différence

Qu'est-ce que vous essayez de faire (Erreur d'impression si une ligne est différente) peut ne pas être la meilleure option ici. quel afraframe avez-vous l'intention d'utiliser comme base de comparaison et d'ajouter la colonne d'erreur? Supposons que vous choisissiez DF1 et comparez-la à DF2, que si DF2 a des lignes supplémentaires qui ne sont pas présentes dans DF1; Dans ce cas, il n'y a pas de ligne dans DF1 pour ajouter le message d'erreur.


0 commentaires