Skip to content

Commit dd7f12e

Browse files
committed
more fixes
1 parent 6db38b8 commit dd7f12e

File tree

2 files changed

+32
-14
lines changed

2 files changed

+32
-14
lines changed

pandas/indexes/multi.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -2216,14 +2216,16 @@ def equals(self, other):
22162216
if self.is_(other):
22172217
return True
22182218

2219-
if not isinstance(other, Index):
2220-
if not isinstance(other, tuple):
2219+
if not isinstance(other, MultiIndex):
2220+
if isinstance(other, tuple):
2221+
other = [other]
2222+
if not is_list_like(other):
22212223
return False
2222-
other = Index([other])
22232224

2224-
if not isinstance(other, MultiIndex):
2225-
return array_equivalent(self._values,
2226-
_values_from_object(_ensure_index(other)))
2225+
try:
2226+
other = MultiIndex.from_tuples(other)
2227+
except:
2228+
return False
22272229

22282230
if self.nlevels != other.nlevels:
22292231
return False

pandas/tests/indexes/test_multi.py

+24-8
Original file line numberDiff line numberDiff line change
@@ -1447,20 +1447,36 @@ def test_to_hierarchical(self):
14471447
def test_bounds(self):
14481448
self.index._bounds
14491449

1450+
def test_equals(self):
1451+
1452+
for name, idx in compat.iteritems(self.indices):
1453+
self.assertTrue(idx.equals(idx))
1454+
self.assertTrue(idx.equals(idx.copy()))
1455+
self.assertTrue(idx.equals(idx.astype(object)))
1456+
self.assertTrue(idx.equals(list(idx)))
1457+
self.assertTrue(idx.equals(np.array(idx)))
1458+
1459+
same_values = Index(idx, dtype=object)
1460+
self.assertTrue(idx.equals(same_values))
1461+
self.assertTrue(same_values.equals(idx))
1462+
14501463
def test_equals_multi(self):
1451-
self.assertTrue(self.index.equals(self.index))
1452-
self.assertTrue(self.index.equal_levels(self.index))
1464+
assert self.index.equals(self.index)
1465+
assert self.index.equals(self.index.values)
1466+
assert self.index.equals(Index(self.index.values))
14531467

1454-
self.assertFalse(self.index.equals(self.index[:-1]))
1468+
assert self.index.equal_levels(self.index)
1469+
assert not self.index.equals(self.index[:-1])
1470+
assert not self.index.equals(self.index[-1])
14551471

14561472
# different number of levels
14571473
index = MultiIndex(levels=[Index(lrange(4)), Index(lrange(4)), Index(
14581474
lrange(4))], labels=[np.array([0, 0, 1, 2, 2, 2, 3, 3]), np.array(
14591475
[0, 1, 0, 0, 0, 1, 0, 1]), np.array([1, 0, 1, 1, 0, 0, 1, 0])])
14601476

14611477
index2 = MultiIndex(levels=index.levels[:-1], labels=index.labels[:-1])
1462-
self.assertFalse(index.equals(index2))
1463-
self.assertFalse(index.equal_levels(index2))
1478+
assert not index.equals(index2)
1479+
assert not index.equal_levels(index2)
14641480

14651481
# levels are different
14661482
major_axis = Index(lrange(4))
@@ -1471,8 +1487,8 @@ def test_equals_multi(self):
14711487

14721488
index = MultiIndex(levels=[major_axis, minor_axis],
14731489
labels=[major_labels, minor_labels])
1474-
self.assertFalse(self.index.equals(index))
1475-
self.assertFalse(self.index.equal_levels(index))
1490+
assert not self.index.equals(index)
1491+
assert not self.index.equal_levels(index)
14761492

14771493
# some of the labels are different
14781494
major_axis = Index(['foo', 'bar', 'baz', 'qux'])
@@ -1483,7 +1499,7 @@ def test_equals_multi(self):
14831499

14841500
index = MultiIndex(levels=[major_axis, minor_axis],
14851501
labels=[major_labels, minor_labels])
1486-
self.assertFalse(self.index.equals(index))
1502+
assert not self.index.equals(index)
14871503

14881504
def test_equals_missing_values(self):
14891505
# make sure take is not using -1

0 commit comments

Comments
 (0)