Skip to content

Commit c03d480

Browse files
committed
Fix _validate_index_level to handle None values correctly and fix CRLF line endings
1 parent d32d836 commit c03d480

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

pandas/core/indexes/base.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2092,11 +2092,29 @@ def _validate_index_level(self, level) -> None:
20922092
if isna(level) and isna(self.name):
20932093
return
20942094

2095-
elif isna(level) or isna(self.name):
2095+
elif isna(level) and not isna(self.name):
20962096
raise KeyError(
20972097
f"Requested level ({level}) does not match index name ({self.name})"
20982098
)
20992099

2100+
elif not isna(level) and isna(self.name):
2101+
# level is not NA, but self.name is NA
2102+
# This is valid for integer levels (0, -1) accessing unnamed index
2103+
if lib.is_integer(level):
2104+
if level < 0 and level != -1:
2105+
raise IndexError(
2106+
f"Too many levels: Index has only 1 level, not {level + 1}"
2107+
)
2108+
elif level > 0:
2109+
raise IndexError(
2110+
f"Too many levels: Index has only 1 level, not {level + 1}"
2111+
)
2112+
return
2113+
else:
2114+
raise KeyError(
2115+
f"Requested level ({level}) does not match index name ({self.name})"
2116+
)
2117+
21002118
elif lib.is_integer(level):
21012119
if isinstance(self.name, int) and level == self.name:
21022120
return

0 commit comments

Comments
 (0)