From 420e56dc114f0191a3a48bb58136ff8120f99967 Mon Sep 17 00:00:00 2001 From: Patrick Hoefler Date: Fri, 17 Mar 2023 18:14:13 +0100 Subject: [PATCH 1/2] PERF: Improve performance with copy=True and different dtype --- pandas/core/internals/construction.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pandas/core/internals/construction.py b/pandas/core/internals/construction.py index b114b8a1aa7aa..8c8f8eeb92606 100644 --- a/pandas/core/internals/construction.py +++ b/pandas/core/internals/construction.py @@ -17,6 +17,7 @@ from pandas._libs import lib +from pandas.core.dtypes.astype import astype_is_view from pandas.core.dtypes.cast import ( construct_1d_arraylike_from_scalar, dict_compat, @@ -293,6 +294,11 @@ def ndarray_to_mgr( elif isinstance(values, (np.ndarray, ExtensionArray, ABCSeries, Index)): # drop subclass info + _copy = ( + copy_on_sanitize + if (dtype is None or astype_is_view(values.dtype, dtype)) + else False + ) values = np.array(values, copy=copy_on_sanitize) values = _ensure_2d(values) From a4601c72485ddc246f29241b2c355a195c1d6a22 Mon Sep 17 00:00:00 2001 From: Patrick Hoefler Date: Fri, 17 Mar 2023 18:18:42 +0100 Subject: [PATCH 2/2] Switch copy back --- pandas/core/internals/construction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/internals/construction.py b/pandas/core/internals/construction.py index 8c8f8eeb92606..987dce4bcad26 100644 --- a/pandas/core/internals/construction.py +++ b/pandas/core/internals/construction.py @@ -299,7 +299,7 @@ def ndarray_to_mgr( if (dtype is None or astype_is_view(values.dtype, dtype)) else False ) - values = np.array(values, copy=copy_on_sanitize) + values = np.array(values, copy=_copy) values = _ensure_2d(values) else: