Skip to content

Commit e7fb97b

Browse files
authored
CLN: we know type of plane_indexer (#37853)
1 parent 342640b commit e7fb97b

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

pandas/core/indexing.py

+22-21
Original file line numberDiff line numberDiff line change
@@ -1654,8 +1654,8 @@ def _setitem_with_indexer_split_path(self, indexer, value):
16541654
# Ensure we have something we can iterate over
16551655
ilocs = self._ensure_iterable_column_indexer(indexer[1])
16561656

1657-
plane_indexer = indexer[:1]
1658-
lplane_indexer = length_of_indexer(plane_indexer[0], self.obj.index)
1657+
pi = indexer[0]
1658+
lplane_indexer = length_of_indexer(pi, self.obj.index)
16591659
# lplane_indexer gives the expected length of obj[indexer[0]]
16601660

16611661
if len(ilocs) == 1:
@@ -1686,14 +1686,10 @@ def _setitem_with_indexer_split_path(self, indexer, value):
16861686
elif np.ndim(value) == 2:
16871687
self._setitem_with_indexer_2d_value(indexer, value)
16881688

1689-
elif (
1690-
len(ilocs) == 1
1691-
and lplane_indexer == len(value)
1692-
and not is_scalar(plane_indexer[0])
1693-
):
1689+
elif len(ilocs) == 1 and lplane_indexer == len(value) and not is_scalar(pi):
16941690
# we have an equal len list/ndarray
16951691
# We only get here with len(ilocs) == 1
1696-
self._setitem_single_column(ilocs[0], value, plane_indexer)
1692+
self._setitem_single_column(ilocs[0], value, pi)
16971693

16981694
elif lplane_indexer == 0 and len(value) == len(self.obj.index):
16991695
# We get here in one case via .loc with a all-False mask
@@ -1708,20 +1704,20 @@ def _setitem_with_indexer_split_path(self, indexer, value):
17081704
)
17091705

17101706
for loc, v in zip(ilocs, value):
1711-
self._setitem_single_column(loc, v, plane_indexer)
1707+
self._setitem_single_column(loc, v, pi)
17121708
else:
17131709

17141710
if isinstance(indexer[0], np.ndarray) and indexer[0].ndim > 2:
17151711
raise ValueError(r"Cannot set values with ndim > 2")
17161712

17171713
# scalar value
17181714
for loc in ilocs:
1719-
self._setitem_single_column(loc, value, plane_indexer)
1715+
self._setitem_single_column(loc, value, pi)
17201716

17211717
def _setitem_with_indexer_2d_value(self, indexer, value):
17221718
# We get here with np.ndim(value) == 2, excluding DataFrame,
17231719
# which goes through _setitem_with_indexer_frame_value
1724-
plane_indexer = indexer[:1]
1720+
pi = indexer[0]
17251721

17261722
ilocs = self._ensure_iterable_column_indexer(indexer[1])
17271723

@@ -1734,13 +1730,13 @@ def _setitem_with_indexer_2d_value(self, indexer, value):
17341730

17351731
for i, loc in enumerate(ilocs):
17361732
# setting with a list, re-coerces
1737-
self._setitem_single_column(loc, value[:, i].tolist(), plane_indexer)
1733+
self._setitem_single_column(loc, value[:, i].tolist(), pi)
17381734

17391735
def _setitem_with_indexer_frame_value(self, indexer, value: "DataFrame"):
17401736
ilocs = self._ensure_iterable_column_indexer(indexer[1])
17411737

17421738
sub_indexer = list(indexer)
1743-
plane_indexer = indexer[:1]
1739+
pi = indexer[0]
17441740

17451741
multiindex_indexer = isinstance(self.obj.columns, ABCMultiIndex)
17461742

@@ -1761,7 +1757,7 @@ def _setitem_with_indexer_frame_value(self, indexer, value: "DataFrame"):
17611757
else:
17621758
val = np.nan
17631759

1764-
self._setitem_single_column(loc, val, plane_indexer)
1760+
self._setitem_single_column(loc, val, pi)
17651761

17661762
elif not unique_cols:
17671763
raise ValueError("Setting with non-unique columns is not allowed.")
@@ -1777,10 +1773,18 @@ def _setitem_with_indexer_frame_value(self, indexer, value: "DataFrame"):
17771773
else:
17781774
val = np.nan
17791775

1780-
self._setitem_single_column(loc, val, plane_indexer)
1776+
self._setitem_single_column(loc, val, pi)
17811777

17821778
def _setitem_single_column(self, loc: int, value, plane_indexer):
1783-
# positional setting on column loc
1779+
"""
1780+
1781+
Parameters
1782+
----------
1783+
loc : int
1784+
Indexer for column position
1785+
plane_indexer : int, slice, listlike[int]
1786+
The indexer we use for setitem along axis=0.
1787+
"""
17841788
pi = plane_indexer
17851789

17861790
ser = self.obj._ixs(loc, axis=1)
@@ -1790,15 +1794,12 @@ def _setitem_single_column(self, loc: int, value, plane_indexer):
17901794
# which means essentially reassign to the columns of a
17911795
# multi-dim object
17921796
# GH#6149 (null slice), GH#10408 (full bounds)
1793-
if isinstance(pi, tuple) and all(
1794-
com.is_null_slice(idx) or com.is_full_slice(idx, len(self.obj))
1795-
for idx in pi
1796-
):
1797+
if com.is_null_slice(pi) or com.is_full_slice(pi, len(self.obj)):
17971798
ser = value
17981799
else:
17991800
# set the item, possibly having a dtype change
18001801
ser = ser.copy()
1801-
ser._mgr = ser._mgr.setitem(indexer=pi, value=value)
1802+
ser._mgr = ser._mgr.setitem(indexer=(pi,), value=value)
18021803
ser._maybe_update_cacher(clear=True)
18031804

18041805
# reset the sliced object if unique

0 commit comments

Comments
 (0)