2017-10-03 5 views
1

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?

+2

-> [ '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. –

+1

@ cᴏʟᴅsᴘᴇᴇᴅ, parfait. Faites-en une réponse et je l'accepterai. –

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 absolue atol sont additionnées pour comparer la différence absolue entre a et b.

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=...) 

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])