0
votes

Quelqu'un peut-il suggérer de mieux affirmer la méthode pour comparer deux colonnes d'un seul Dataframe à Pytest?

J'utilise Pytest fort> pour comparer deux colonnes d'un Dataframe En utilisant ci-dessous affirmez code> méthode xxx pré>

mais le problème avec cet assert_almost_equal () code> méthode est tout en comparant la valeur COL1, c'est-à-dire 0.850341028331584 (jusqu'à 4 décimales, c'est-à-dire 0,8503 strong>) avec COL2, c'est-à-dire 0.850341028331585 strong> (jusqu'à 4 décimales, c'est-à-dire 0,8503 strong>), il jette une erreur:

   >           raise AssertionError(msg)
E           AssertionError: 
E           Arrays are not almost equal to 4 decimals
E           
E           x and y nan location mismatch:


E            x: array([0.8503, 0.1234, ..., 0.9028, 0.981 , 0.9789])
E            y: array([0.8503, 0.1234, ..., 0.9028, 0.981 , 0.9789])


1 commentaires

Vous pouvez essayer le Méthodes de test Pandas avec tolérance relative plutôt. Cela pourrait être plus approprié pour un Dataframe.


3 Réponses :


0
votes

Vous pouvez essayer la méthode Pandas ASSERT_SERIES_EQUAL Avec la tolérance relative - il semble fonctionner pour moi: xxx

Malheureusement, vous devez renommer la première série pour avoir le même nom que le deuxième nom possible pour que cette fonction fonctionne. Il y a un Emission fermée en rapport avec ceci.


5 commentaires

Je ne suis pas sûr que ce 'Rtol' fonctionnera avec cet asser_series_equal parce que pendant que j'essaie de l'utiliser, c'est montrer "argument inattendu"


Avec cette erreur 'TypeError: Asser_series_equal () a eu un argument de mot clé inattendu' rtol ''


Quelle version de Pandas utilisez-vous?


J'utilise la version python 3.8.0


Je suis donc moi. L'aspect le plus important est la version Pandas. Le mien est 1.1.0: type PIP show pandas pour trouver votre version.



0
votes

Vous pouvez utiliser np.isclose code> pour ces situations, où vous pouvez contrôler la précision si vous souhaitez

assert np.all(np.isclose(v['col1'].values, v['col2'].values))


0 commentaires

0
votes

Si vous souhaitez utiliser une méthode d'assertion qui comparer strictement les données jusqu'à certains décimaux, utilisez cette méthode xxx

cette méthode fonctionne parfaitement sans effectuer le rond-arrêt par défaut


0 commentaires