From 22c9f8f8a98f249e8f450d2ab1fca21e7b4abf7c Mon Sep 17 00:00:00 2001 From: Brock Date: Mon, 23 Aug 2021 09:53:42 -0700 Subject: [PATCH 1/2] PERF: copy blklocs/blknos in BlockManager.apply --- pandas/core/internals/managers.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pandas/core/internals/managers.py b/pandas/core/internals/managers.py index d0dad26cfb275..06258a428ad35 100644 --- a/pandas/core/internals/managers.py +++ b/pandas/core/internals/managers.py @@ -330,7 +330,10 @@ def apply( if ignore_failures: return self._combine(result_blocks) - return type(self).from_blocks(result_blocks, self.axes) + out = type(self).from_blocks(result_blocks, self.axes) + out._blknos = self.blknos.copy() + out._blklocs = self.blklocs.copy() + return out def where(self: T, other, cond, align: bool, errors: str) -> T: if align: From a397433b70b40c1368c97c6aac5a5b00b4bbec05 Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 24 Aug 2021 09:40:09 -0700 Subject: [PATCH 2/2] only for copy --- pandas/core/internals/managers.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pandas/core/internals/managers.py b/pandas/core/internals/managers.py index 06258a428ad35..db6e2753ed698 100644 --- a/pandas/core/internals/managers.py +++ b/pandas/core/internals/managers.py @@ -331,8 +331,6 @@ def apply( return self._combine(result_blocks) out = type(self).from_blocks(result_blocks, self.axes) - out._blknos = self.blknos.copy() - out._blklocs = self.blklocs.copy() return out def where(self: T, other, cond, align: bool, errors: str) -> T: @@ -592,8 +590,14 @@ def copy_func(ax): new_axes = list(self.axes) res = self.apply("copy", deep=deep) + res.axes = new_axes + if self.ndim > 1: + # Avoid needing to re-compute these + res._blknos = self.blknos.copy() + res._blklocs = self.blklocs.copy() + if deep: res._consolidate_inplace() return res