Skip to content

Commit 859eb6a

Browse files
TST: GH20676 Verify equals operator for list of Numpy arrays (#35237)
1 parent b600f8d commit 859eb6a

File tree

2 files changed

+56
-36
lines changed

2 files changed

+56
-36
lines changed

pandas/tests/generic/test_generic.py

+1-36
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from pandas.core.dtypes.common import is_scalar
99

1010
import pandas as pd
11-
from pandas import DataFrame, MultiIndex, Series, date_range
11+
from pandas import DataFrame, Series, date_range
1212
import pandas._testing as tm
1313
import pandas.core.common as com
1414

@@ -785,26 +785,6 @@ def test_depr_take_kwarg_is_copy(self, is_copy):
785785
s.take([0, 1], is_copy=is_copy)
786786

787787
def test_equals(self):
788-
s1 = pd.Series([1, 2, 3], index=[0, 2, 1])
789-
s2 = s1.copy()
790-
assert s1.equals(s2)
791-
792-
s1[1] = 99
793-
assert not s1.equals(s2)
794-
795-
# NaNs compare as equal
796-
s1 = pd.Series([1, np.nan, 3, np.nan], index=[0, 2, 1, 3])
797-
s2 = s1.copy()
798-
assert s1.equals(s2)
799-
800-
s2[0] = 9.9
801-
assert not s1.equals(s2)
802-
803-
idx = MultiIndex.from_tuples([(0, "a"), (1, "b"), (2, "c")])
804-
s1 = Series([1, 2, np.nan], index=idx)
805-
s2 = s1.copy()
806-
assert s1.equals(s2)
807-
808788
# Add object dtype column with nans
809789
index = np.random.random(10)
810790
df1 = DataFrame(np.random.random(10), index=index, columns=["floats"])
@@ -857,21 +837,6 @@ def test_equals(self):
857837
df2 = df1.set_index(["floats"], append=True)
858838
assert df3.equals(df2)
859839

860-
# GH 8437
861-
a = pd.Series([False, np.nan])
862-
b = pd.Series([False, np.nan])
863-
c = pd.Series(index=range(2), dtype=object)
864-
d = c.copy()
865-
e = c.copy()
866-
f = c.copy()
867-
c[:-1] = d[:-1] = e[0] = f[0] = False
868-
assert a.equals(a)
869-
assert a.equals(b)
870-
assert a.equals(c)
871-
assert a.equals(d)
872-
assert a.equals(e)
873-
assert e.equals(f)
874-
875840
def test_pipe(self):
876841
df = DataFrame({"A": [1, 2, 3]})
877842
f = lambda x, y: x ** y
+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import numpy as np
2+
import pytest
3+
4+
from pandas import MultiIndex, Series
5+
6+
7+
@pytest.mark.parametrize(
8+
"arr, idx",
9+
[
10+
([1, 2, 3, 4], [0, 2, 1, 3]),
11+
([1, np.nan, 3, np.nan], [0, 2, 1, 3]),
12+
(
13+
[1, np.nan, 3, np.nan],
14+
MultiIndex.from_tuples([(0, "a"), (1, "b"), (2, "c"), (3, "c")]),
15+
),
16+
],
17+
)
18+
def test_equals(arr, idx):
19+
s1 = Series(arr, index=idx)
20+
s2 = s1.copy()
21+
assert s1.equals(s2)
22+
23+
s1[1] = 9
24+
assert not s1.equals(s2)
25+
26+
27+
def test_equals_list_array():
28+
# GH20676 Verify equals operator for list of Numpy arrays
29+
arr = np.array([1, 2])
30+
s1 = Series([arr, arr])
31+
s2 = s1.copy()
32+
assert s1.equals(s2)
33+
34+
# TODO: Series equals should also work between single value and list
35+
# s1[1] = 9
36+
# assert not s1.equals(s2)
37+
38+
39+
def test_equals_false_negative():
40+
# GH8437 Verify false negative behavior of equals function for dtype object
41+
arr = [False, np.nan]
42+
s1 = Series(arr)
43+
s2 = s1.copy()
44+
s3 = Series(index=range(2), dtype=object)
45+
s4 = s3.copy()
46+
s5 = s3.copy()
47+
s6 = s3.copy()
48+
49+
s3[:-1] = s4[:-1] = s5[0] = s6[0] = False
50+
assert s1.equals(s1)
51+
assert s1.equals(s2)
52+
assert s1.equals(s3)
53+
assert s1.equals(s4)
54+
assert s1.equals(s5)
55+
assert s5.equals(s6)

0 commit comments

Comments
 (0)