@@ -2084,48 +2084,35 @@ def _validate_index_level(self, level) -> None:
2084
2084
verification must be done like in MultiIndex.
2085
2085
2086
2086
"""
2087
- # Explicitly raise for missing/null values to match pandas convention
2088
- # Also reject all NA-like values (np.nan, pd.NA, pd.NaT, etc.)
2089
- if isna (level ):
2090
- raise KeyError (
2091
- f"Requested level ({ level } ) does not match index name ({ self .name } )"
2092
- )
2087
+ if isna (level ) and isna (self .name ):
2088
+ return
2093
2089
2094
- # Handle NA-like index.name as well
2095
- if isna (self .name ):
2090
+ elif isna (level ) or isna (self .name ):
2096
2091
raise KeyError (
2097
2092
f"Requested level ({ level } ) does not match index name ({ self .name } )"
2098
2093
)
2099
2094
2100
- # Reject booleans unless the index name is actually a boolean and matches
2101
- if isinstance (level , bool ):
2102
- if level != self .name :
2103
- raise KeyError (
2104
- f"Requested level ({ level } ) does not match index name ({ self .name } )"
2105
- )
2106
- return
2107
-
2108
- # Integer-like levels
2109
- if lib .is_integer (level ):
2110
- # Exclude bools (already handled above)
2095
+ elif lib .is_integer (level ):
2111
2096
if isinstance (self .name , int ) and level == self .name :
2112
2097
return
2113
2098
if level < 0 and level != - 1 :
2114
2099
raise IndexError (
2115
2100
f"Too many levels: Index has only 1 level, not { level + 1 } "
2116
2101
)
2102
+ elif level > 0 :
2103
+ raise IndexError (
2104
+ f"Too many levels: Index has only 1 level, not { level + 1 } "
2105
+ )
2117
2106
return
2118
2107
2119
- # For string-level, require both to be strings and equal
2120
- if isinstance (level , str ) and isinstance (self .name , str ):
2108
+ elif isinstance (level , str ) and isinstance (self .name , str ):
2121
2109
if level != self .name :
2122
2110
raise KeyError (
2123
2111
f"Requested level ({ level } ) does not match index name ({ self .name } )"
2124
2112
)
2125
2113
return
2126
2114
2127
- # For all other types, require exact match to index name
2128
- if level != self .name :
2115
+ elif level != self .name :
2129
2116
raise KeyError (
2130
2117
f"Requested level ({ level } ) does not match index name ({ self .name } )"
2131
2118
)
0 commit comments