Skip to content

Commit 6bc2dca

Browse files
authored
CLN: assorted indexing-related cleanups (#31797)
1 parent 4ab7bb4 commit 6bc2dca

File tree

4 files changed

+19
-17
lines changed

4 files changed

+19
-17
lines changed

pandas/core/frame.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -2933,12 +2933,12 @@ def __setitem__(self, key, value):
29332933
# set column
29342934
self._set_item(key, value)
29352935

2936-
def _setitem_slice(self, key, value):
2936+
def _setitem_slice(self, key: slice, value):
29372937
# NB: we can't just use self.loc[key] = value because that
29382938
# operates on labels and we need to operate positional for
29392939
# backwards-compat, xref GH#31469
29402940
self._check_setitem_copy()
2941-
self.loc._setitem_with_indexer(key, value)
2941+
self.iloc._setitem_with_indexer(key, value)
29422942

29432943
def _setitem_array(self, key, value):
29442944
# also raises Exception if object array with NA values
@@ -2950,7 +2950,7 @@ def _setitem_array(self, key, value):
29502950
key = check_bool_indexer(self.index, key)
29512951
indexer = key.nonzero()[0]
29522952
self._check_setitem_copy()
2953-
self.loc._setitem_with_indexer(indexer, value)
2953+
self.iloc._setitem_with_indexer(indexer, value)
29542954
else:
29552955
if isinstance(value, DataFrame):
29562956
if len(value.columns) != len(key):
@@ -2962,7 +2962,7 @@ def _setitem_array(self, key, value):
29622962
key, axis=1, raise_missing=False
29632963
)[1]
29642964
self._check_setitem_copy()
2965-
self.loc._setitem_with_indexer((slice(None), indexer), value)
2965+
self.iloc._setitem_with_indexer((slice(None), indexer), value)
29662966

29672967
def _setitem_frame(self, key, value):
29682968
# support boolean setting with DataFrame input, e.g.

pandas/core/indexes/base.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -3193,17 +3193,16 @@ def is_int(v):
31933193
# convert the slice to an indexer here
31943194

31953195
# if we are mixed and have integers
3196-
try:
3197-
if is_positional and self.is_mixed():
3196+
if is_positional and self.is_mixed():
3197+
try:
31983198
# Validate start & stop
31993199
if start is not None:
32003200
self.get_loc(start)
32013201
if stop is not None:
32023202
self.get_loc(stop)
32033203
is_positional = False
3204-
except KeyError:
3205-
if self.inferred_type in ["mixed-integer-float", "integer-na"]:
3206-
raise
3204+
except KeyError:
3205+
pass
32073206

32083207
if is_null_slicer:
32093208
indexer = key

pandas/core/indexing.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626
is_list_like_indexer,
2727
length_of_indexer,
2828
)
29-
from pandas.core.indexes.api import Index
30-
from pandas.core.indexes.base import InvalidIndexError
29+
from pandas.core.indexes.api import Index, InvalidIndexError
3130

3231
# "null slice"
3332
_NS = slice(None, None)
@@ -592,6 +591,9 @@ def _get_label(self, label, axis: int):
592591
return self.obj._xs(label, axis=axis)
593592

594593
def _get_setitem_indexer(self, key):
594+
"""
595+
Convert a potentially-label-based key into a positional indexer.
596+
"""
595597
if self.axis is not None:
596598
return self._convert_tuple(key, is_setter=True)
597599

@@ -756,7 +758,7 @@ def _setitem_with_indexer(self, indexer, value):
756758
"defined index and a scalar"
757759
)
758760
self.obj[key] = value
759-
return self.obj
761+
return
760762

761763
# add a new item with the dtype setup
762764
self.obj[key] = _infer_fill_value(value)
@@ -766,7 +768,7 @@ def _setitem_with_indexer(self, indexer, value):
766768
)
767769
self._setitem_with_indexer(new_indexer, value)
768770

769-
return self.obj
771+
return
770772

771773
# reindex the axis
772774
# make sure to clear the cache because we are
@@ -789,7 +791,8 @@ def _setitem_with_indexer(self, indexer, value):
789791
indexer, missing = convert_missing_indexer(indexer)
790792

791793
if missing:
792-
return self._setitem_with_indexer_missing(indexer, value)
794+
self._setitem_with_indexer_missing(indexer, value)
795+
return
793796

794797
# set
795798
item_labels = self.obj._get_axis(info_axis)
@@ -1012,7 +1015,6 @@ def _setitem_with_indexer_missing(self, indexer, value):
10121015
new_values, index=new_index, name=self.obj.name
10131016
)._data
10141017
self.obj._maybe_update_cacher(clear=True)
1015-
return self.obj
10161018

10171019
elif self.ndim == 2:
10181020

@@ -1036,7 +1038,6 @@ def _setitem_with_indexer_missing(self, indexer, value):
10361038

10371039
self.obj._data = self.obj.append(value)._data
10381040
self.obj._maybe_update_cacher(clear=True)
1039-
return self.obj
10401041

10411042
def _align_series(self, indexer, ser: ABCSeries, multiindex_indexer: bool = False):
10421043
"""

pandas/core/series.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,9 @@ def __getitem__(self, key):
865865

866866
return result
867867
except InvalidIndexError:
868-
pass
868+
if not isinstance(self.index, MultiIndex):
869+
raise
870+
869871
except (KeyError, ValueError):
870872
if isinstance(key, tuple) and isinstance(self.index, MultiIndex):
871873
# kludge

0 commit comments

Comments
 (0)