Skip to content

Commit 1b30cfc

Browse files
committed
TST: be less lazy about empty MultiIndex set difference, check names
1 parent c93ded7 commit 1b30cfc

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

pandas/core/index.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -1531,12 +1531,16 @@ def diff(self, other):
15311531
"""
15321532
self._assert_can_do_setop(other)
15331533

1534+
result_names = self.names if self.names == other.names else None
1535+
15341536
if self.equals(other):
1535-
return self[:0]
1537+
return MultiIndex(levels=[[]]*self.nlevels,
1538+
labels=[[]]*self.nlevels,
1539+
names=result_names)
15361540

15371541
difference = sorted(set(self.values) - set(other.values))
15381542
return MultiIndex.from_tuples(difference, sortorder=0,
1539-
names=self.names)
1543+
names=result_names)
15401544

15411545
def _assert_can_do_setop(self, other):
15421546
if not isinstance(other, MultiIndex):

pandas/tests/test_index.py

+7
Original file line numberDiff line numberDiff line change
@@ -907,10 +907,17 @@ def test_diff(self):
907907
self.assert_(result.equals(expected))
908908
self.assertEqual(result.names, self.index.names)
909909

910+
# empty difference
910911
result = first - first
911912
expected = first[:0]
912913
self.assert_(result.equals(expected))
913914

915+
# names not the same
916+
chunklet = self.index[-3:]
917+
chunklet.names = ['foo', 'baz']
918+
result = first - chunklet
919+
self.assertEqual(result.names, [None, None])
920+
914921
def test_argsort(self):
915922
result = self.index.argsort()
916923
expected = self.index.get_tuple_index().argsort()

0 commit comments

Comments
 (0)