Vergleichen pandas-Serie für die Gleichstellung, wenn Sie enthalten nan?
Meine Anwendung zu vergleichen-Serie Instanzen, die manchmal enthalten nans. Das bewirkt, dass gewöhnliche Vergleich mit ==
zu scheitern, da nan != nan
:
import numpy as np
from pandas import Series
s1 = Series([1,np.nan])
s2 = Series([1,np.nan])
>>> (Series([1, nan]) == Series([1, nan])).all()
False
Was ist die richtige Art und Weise zu vergleichen wie Serie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie über dieses. Überprüfen Sie zuerst die NaNs sind in der gleichen Stelle (mit isnull):
Überprüfen Sie dann die Werte, die nicht NaN sind gleich (mit notnull):
Um gleichberechtigt zu sein, brauchen wir beide, um Wahr zu sein:
Sie könnte auch prüfen, Namen, etc. wenn dies nicht ausreichend.
Wenn Sie wollen erhöhen, wenn Sie unterschiedlich sind, verwenden Sie
assert_series_equal
vonpandas.util.testing
:Series.equals()
sollte die akzeptierte Antwort und wurde korrekt, da 0.13.1 (Feb 2014)Derzeit sollte man nur verwenden
series1.equals(series2)
siehe docs. Dies wird auch überprüft, obnan
s sind in den gleichen Positionen.(Series([1, nan]).dropna() == Series([nan, 1]).dropna()).all() #=> True
assert_series_equal
als Andy zeigt oben