diff --git a/pandas/core/generic.py b/pandas/core/generic.py index c3ad87082c8ed..6895455a43160 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -6359,9 +6359,6 @@ def fillna( raise NotImplementedError() result = self.T.fillna(method=method, limit=limit).T - # need to downcast here because of all of the transposes - result._mgr = result._mgr.downcast() - return result new_data = self._mgr.interpolate( @@ -6415,9 +6412,6 @@ def fillna( result = self.T.fillna(value=value, limit=limit).T - # need to downcast here because of all of the transposes - result._mgr = result._mgr.downcast() - new_data = result else: diff --git a/pandas/core/internals/array_manager.py b/pandas/core/internals/array_manager.py index 9344aea8221d5..d1802afb7a2f1 100644 --- a/pandas/core/internals/array_manager.py +++ b/pandas/core/internals/array_manager.py @@ -388,9 +388,6 @@ def fillna(self: T, value, limit, inplace: bool, downcast) -> T: "fillna", value=value, limit=limit, inplace=inplace, downcast=downcast ) - def downcast(self: T) -> T: - return self.apply_with_block("downcast") - def astype(self: T, dtype, copy: bool = False, errors: str = "raise") -> T: return self.apply(astype_array_safe, dtype=dtype, copy=copy, errors=errors) diff --git a/pandas/core/internals/blocks.py b/pandas/core/internals/blocks.py index de612b367f78f..85d715f37a05b 100644 --- a/pandas/core/internals/blocks.py +++ b/pandas/core/internals/blocks.py @@ -511,8 +511,9 @@ def _maybe_downcast(self, blocks: list[Block], downcast=None) -> list[Block]: # no need to downcast our float # unless indicated - if downcast is None and self.dtype.kind in ["f", "m", "M"]: - # TODO: complex? more generally, self._can_hold_na? + if downcast is None and self.dtype.kind in ["f", "c", "m", "M"]: + # passing "infer" to maybe_downcast_to_dtype (via self.downcast) + # would be a no-op, so we can short-circuit return blocks return extend_blocks([b.downcast(downcast) for b in blocks]) diff --git a/pandas/core/internals/managers.py b/pandas/core/internals/managers.py index 9b29216fa407b..991094f86c999 100644 --- a/pandas/core/internals/managers.py +++ b/pandas/core/internals/managers.py @@ -394,9 +394,6 @@ def fillna(self: T, value, limit, inplace: bool, downcast) -> T: "fillna", value=value, limit=limit, inplace=inplace, downcast=downcast ) - def downcast(self: T) -> T: - return self.apply("downcast") - def astype(self: T, dtype, copy: bool = False, errors: str = "raise") -> T: return self.apply("astype", dtype=dtype, copy=copy, errors=errors) diff --git a/pandas/tests/generic/test_generic.py b/pandas/tests/generic/test_generic.py index 3a307ebd702ca..186135f598235 100644 --- a/pandas/tests/generic/test_generic.py +++ b/pandas/tests/generic/test_generic.py @@ -164,19 +164,6 @@ def test_nonzero(self): with pytest.raises(ValueError, match=msg): not obj1 - def test_downcast(self): - # test close downcasting - - o = self._construct(shape=4, value=9, dtype=np.int64) - result = o.copy() - result._mgr = o._mgr.downcast() - self._compare(result, o) - - o = self._construct(shape=4, value=9.5) - result = o.copy() - result._mgr = o._mgr.downcast() - self._compare(result, o) - def test_constructor_compound_dtypes(self): # see gh-5191 # Compound dtypes should raise NotImplementedError.