Skip to content

Commit eca19a2

Browse files
committed
BUG: Fix Index level validation to handle integer index names correctly
1 parent f57ddc5 commit eca19a2

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

pandas/core/indexes/base.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2085,6 +2085,10 @@ def _validate_index_level(self, level) -> None:
20852085
20862086
"""
20872087
if type(level) is int:
2088+
2089+
if isinstance(self.name, int) and level == self.name:
2090+
return
2091+
20882092
if level < 0 and level != -1:
20892093
raise IndexError(
20902094
"Too many levels: Index has only 1 level, "
@@ -2095,11 +2099,14 @@ def _validate_index_level(self, level) -> None:
20952099
f"Too many levels: Index has only 1 level, not {level + 1}"
20962100
)
20972101

2098-
else:
2099-
if level != self.name:
2100-
raise KeyError(
2101-
f"Requested level ({level}) does not match index name ({self.name})"
2102-
)
2102+
elif (
2103+
isinstance(level, str)
2104+
and isinstance(self.name, str)
2105+
and level != self.name
2106+
):
2107+
raise KeyError(
2108+
f"Requested level ({level}) does not match index name ({self.name})"
2109+
)
21032110

21042111
def _get_level_number(self, level) -> int:
21052112
self._validate_index_level(level)

0 commit comments

Comments
 (0)