From 494c84ae8eb161c27121e30ad18bc9b4ff3812d8 Mon Sep 17 00:00:00 2001 From: Brock Date: Mon, 7 Dec 2020 17:52:42 -0800 Subject: [PATCH] REF: consolidate NDFrame._iset_item, _set_item with DataFrame methods --- pandas/core/frame.py | 19 +++++++++++++++---- pandas/core/generic.py | 14 -------------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index fd7820196f9a9..de60cda382fba 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -3211,12 +3211,16 @@ def _setitem_frame(self, key, value): self._check_setitem_copy() self._where(-key, value, inplace=True) - def _iset_item(self, loc: int, value): + def _iset_item_mgr(self, loc: int, value) -> None: + self._mgr.iset(loc, value) + self._clear_item_cache() + + def _iset_item(self, loc: int, value, broadcast: bool = False): # technically _sanitize_column expects a label, not a position, # but the behavior is the same as long as we pass broadcast=False - value = self._sanitize_column(loc, value, broadcast=False) - NDFrame._iset_item(self, loc, value) + value = self._sanitize_column(loc, value, broadcast=broadcast) + self._iset_item_mgr(loc, value) # check if we are modifying a copy # try to set first as we want an invalid @@ -3235,7 +3239,14 @@ def _set_item(self, key, value): ensure homogeneity. """ value = self._sanitize_column(key, value) - NDFrame._set_item(self, key, value) + + try: + loc = self._info_axis.get_loc(key) + except KeyError: + # This item wasn't present, just insert at end + self._mgr.insert(len(self._info_axis), key, value) + else: + self._iset_item_mgr(loc, value) # check if we are modifying a copy # try to set first as we want an invalid diff --git a/pandas/core/generic.py b/pandas/core/generic.py index b851c4d7d4931..41cb76d88957e 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -3814,20 +3814,6 @@ def _slice(self: FrameOrSeries, slobj: slice, axis=0) -> FrameOrSeries: result._set_is_copy(self, copy=is_copy) return result - def _iset_item(self, loc: int, value) -> None: - self._mgr.iset(loc, value) - self._clear_item_cache() - - def _set_item(self, key, value) -> None: - try: - loc = self._info_axis.get_loc(key) - except KeyError: - # This item wasn't present, just insert at end - self._mgr.insert(len(self._info_axis), key, value) - return - - NDFrame._iset_item(self, loc, value) - @final def _set_is_copy(self, ref, copy: bool_t = True) -> None: if not copy: