Làm thế nào về điều này. Đầu tiên kiểm tra Nans đang ở trong cùng một vị trí (sử dụng isnull):
In [11]: s1.isnull()
Out[11]:
0 False
1 True
dtype: bool
In [12]: s1.isnull() == s2.isnull()
Out[12]:
0 True
1 True
dtype: bool
Sau đó kiểm tra các giá trị mà không phải là NaN đều bình đẳng (sử dụng notnull):
In [13]: s1[s1.notnull()]
Out[13]:
0 1
dtype: float64
In [14]: s1[s1.notnull()] == s2[s2.notnull()]
Out[14]:
0 True
dtype: bool
Để được chúng tôi bằng cần cả hai phải là True:
In [15]: (s1.isnull() == s2.isnull()).all() and (s1[s1.notnull()] == s2[s2.notnull()]).all()
Out[15]: True
Bạn cũng có thể kiểm tra tên, v.v. nếu điều này không đủ.
Nếu bạn muốn tăng nếu họ là khác nhau, sử dụng assert_series_equal
từ pandas.util.testing
:
In [21]: from pandas.util.testing import assert_series_equal
In [22]: assert_series_equal(s1, s2)
Nguồn
2013-08-26 21:40:33
này hoạt động, quá xấu nó đặt ra một ngoại lệ chứ không phải chỉ trở về False. –
@DunPeal đã thêm bản cập nhật làm điều đúng. –
cảm ơn, điều này hoạt động tốt. Tôi nghĩ rằng nó có thể có ý nghĩa đối với Pandas để thêm một phương thức tóm tắt đoạn mã nhỏ này vào Series. –