Skip to content

Commit e5193c0

Browse files
committed
ENH: check for duplicate level names, GH #280
1 parent e4b66db commit e5193c0

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

pandas/core/index.py

+5
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,11 @@ def __iter__(self):
889889

890890
def _get_level_number(self, level):
891891
if not isinstance(level, int):
892+
count = self.names.count(level)
893+
if count > 1:
894+
raise Exception('The name %s occurs multiple times, use a '
895+
'level number' % level)
896+
892897
level = self.names.index(level)
893898
elif level < 0:
894899
level += self.nlevels

pandas/tests/test_index.py

+4
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,10 @@ def test_constructor_single_level(self):
601601
def test_constructor_no_levels(self):
602602
self.assertRaises(Exception, MultiIndex, levels=[], labels=[])
603603

604+
def test_duplicate_names(self):
605+
self.index.names = ['foo', 'foo']
606+
self.assertRaises(Exception, self.index._get_level_number, 'foo')
607+
604608
def test_from_arrays(self):
605609
arrays = []
606610
for lev, lab in zip(self.index.levels, self.index.labels):

0 commit comments

Comments
 (0)