Skip to content

Commit 3d3a7f4

Browse files
author
awu42
committed
Merge remote-tracking branch 'upstream/master' into new-feature
2 parents b7c0bfd + a446979 commit 3d3a7f4

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

pandas/core/indexes/numeric.py

+12-11
Original file line numberDiff line numberDiff line change
@@ -488,17 +488,18 @@ def __contains__(self, other) -> bool:
488488

489489
@Appender(_index_shared_docs["get_loc"])
490490
def get_loc(self, key, method=None, tolerance=None):
491-
try:
492-
if np.all(np.isnan(key)) or is_bool(key):
493-
nan_idxs = self._nan_idxs
494-
try:
495-
return nan_idxs.item()
496-
except ValueError:
497-
if not len(nan_idxs):
498-
raise KeyError(key)
499-
return nan_idxs
500-
except (TypeError, NotImplementedError):
501-
pass
491+
if is_bool(key):
492+
# Catch this to avoid accidentally casting to 1.0
493+
raise KeyError(key)
494+
495+
if is_float(key) and np.isnan(key):
496+
nan_idxs = self._nan_idxs
497+
if not len(nan_idxs):
498+
raise KeyError(key)
499+
elif len(nan_idxs) == 1:
500+
return nan_idxs[0]
501+
return nan_idxs
502+
502503
return super().get_loc(key, method=method, tolerance=tolerance)
503504

504505
@cache_readonly

pandas/tests/indexes/multi/test_indexing.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,8 @@ def test_get_loc_missing_nan():
396396
idx.get_loc(3)
397397
with pytest.raises(KeyError, match=r"^nan$"):
398398
idx.get_loc(np.nan)
399-
with pytest.raises(KeyError, match=r"^\[nan\]$"):
399+
with pytest.raises(TypeError, match=r"'\[nan\]' is an invalid key"):
400+
# listlike/non-hashable raises TypeError
400401
idx.get_loc([np.nan])
401402

402403

pandas/tests/indexes/test_numeric.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,8 @@ def test_get_loc_missing_nan(self):
389389
idx.get_loc(3)
390390
with pytest.raises(KeyError, match="^nan$"):
391391
idx.get_loc(np.nan)
392-
with pytest.raises(KeyError, match=r"^\[nan\]$"):
392+
with pytest.raises(TypeError, match=r"'\[nan\]' is an invalid key"):
393+
# listlike/non-hashable raises TypeError
393394
idx.get_loc([np.nan])
394395

395396
def test_contains_nans(self):

0 commit comments

Comments
 (0)