Skip to content

Commit a987901

Browse files
authored
REF: de-duplicate DataFrame indexing code (#45092)
1 parent 61bcdff commit a987901

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

pandas/core/frame.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -3865,7 +3865,7 @@ def _set_value(
38653865
loc = self.index.get_loc(index)
38663866
validate_numeric_casting(series.dtype, value)
38673867

3868-
series._values[loc] = value
3868+
series._mgr.setitem_inplace(loc, value)
38693869
# Note: trying to use series._set_value breaks tests in
38703870
# tests.frame.indexing.test_indexing and tests.indexing.test_partial
38713871
except (KeyError, TypeError):
@@ -3908,7 +3908,7 @@ def _box_col_values(self, values: SingleDataManager, loc: int) -> Series:
39083908
name = self.columns[loc]
39093909
klass = self._constructor_sliced
39103910
# We get index=self.index bc values is a SingleDataManager
3911-
return klass(values, name=name, fastpath=True)
3911+
return klass(values, name=name, fastpath=True).__finalize__(self)
39123912

39133913
# ----------------------------------------------------------------------
39143914
# Lookup Caching
@@ -3925,11 +3925,9 @@ def _get_item_cache(self, item: Hashable) -> Series:
39253925
# pending resolution of GH#33047
39263926

39273927
loc = self.columns.get_loc(item)
3928-
col_mgr = self._mgr.iget(loc)
3929-
res = self._box_col_values(col_mgr, loc).__finalize__(self)
3928+
res = self._ixs(loc, axis=1)
39303929

39313930
cache[item] = res
3932-
res._set_as_cached(item, self)
39333931

39343932
# for a chain
39353933
res._is_copy = self._is_copy

pandas/tests/generic/test_duplicate_labels.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,7 @@ def test_series_raises(self):
316316
pytest.param(
317317
operator.itemgetter((0, [0, 0])), "iloc", marks=not_implemented
318318
),
319-
pytest.param(
320-
operator.itemgetter(([0, 0], 0)), "iloc", marks=not_implemented
321-
),
319+
pytest.param(operator.itemgetter(([0, 0], 0)), "iloc"),
322320
],
323321
)
324322
def test_getitem_raises(self, getter, target):

0 commit comments

Comments
 (0)