J'utilise Pytest fort> pour comparer deux colonnes d'un Dataframe
En utilisant ci-dessous mais le problème avec cet affirmez code> méthode
assert_almost_equal () code> méthode est tout en comparant la valeur COL1, c'est-à-dire
> 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])
3 Réponses :
Vous pouvez essayer la méthode Pandas ASSERT_SERIES_EQUAL Avec la tolérance relative - il semble fonctionner pour moi: 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. P> p>
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 code> pour trouver votre version.
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))
Si vous souhaitez utiliser une méthode d'assertion qui comparer strictement les données jusqu'à certains décimaux, utilisez cette méthode cette méthode fonctionne parfaitement sans effectuer le rond-arrêt par défaut p> p>
Vous pouvez essayer le Méthodes de test Pandas avec tolérance relative plutôt. Cela pourrait être plus approprié pour un Dataframe.