Je peux comparer deux séries de Pandas pour l'égalité exacte en utilisant pandas.Series.equals
. Y a-t-il une fonction ou un paramètre correspondant qui vérifiera si les éléments sont égaux à quelques ε de précision?En comparant deux séries de pandas pour le quasi-égalité en virgule flottante?
1
A
Répondre
1
Vous pouvez utiliser numpy.allclose
:
numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
Retours
True
si deux tableaux sont égaux élément par élément dans une tolérance.Les valeurs de tolérance sont positives, généralement de très petits nombres. La différence relative (
rtol * abs(b)
) et la différence absolueatol
sont additionnées pour comparer la différence absolue entrea
etb
.
numpy
fonctionne bien avec pandas.Series
objets, donc si vous avez deux d'entre eux - s1
et s2
, vous pouvez simplement faire:
np.allclose(s1, s2, atol=...)
Où atol
est votre valeur de tolérance .
1
Numpy fonctionne bien avec la série pandas. Cependant, on doit faire attention à l'ordre des indices (ou des colonnes et indices pour pandas géants dataframe)
Par exemple
series_1 = pd.Series(data=[0,1], index=['a','b'])
series_2 = pd.Series(data=[1,0], index=['b','a'])
np.allclose(series_1,series_2)
retournera Faux
Une solution consiste à utiliser l'index d'un pandas géants série
np.allclose(series_1, series_2.loc[series_1.index])
-> [ 'np.allclose (s1, s2)'] (https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.allclose.html) Définissez les paramètres de seuil, les docs l'expliquent bien. –
@ cᴏʟᴅsᴘᴇᴇᴅ, parfait. Faites-en une réponse et je l'accepterai. –