From 1441ee5b7309399c328004fbe9de59ae170f3128 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Fri, 26 Feb 2021 15:07:11 +0100 Subject: [PATCH 1/2] [ArrayManager] Remove apply_with_block usage for diff() --- pandas/core/internals/array_manager.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pandas/core/internals/array_manager.py b/pandas/core/internals/array_manager.py index e0447378c4542..9f1b5866960dc 100644 --- a/pandas/core/internals/array_manager.py +++ b/pandas/core/internals/array_manager.py @@ -452,7 +452,11 @@ def putmask(self, mask, new, align: bool = True): ) def diff(self, n: int, axis: int) -> ArrayManager: - return self.apply_with_block("diff", n=n, axis=axis) + if axis == 1: + axis = 0 + elif axis == 0: + assert n == 0 + return self.apply(algos.diff, n=n, axis=axis) def interpolate(self, **kwargs) -> ArrayManager: return self.apply_with_block("interpolate", **kwargs) From 5481a3468080cd85c2e149d764aafcaa829beadc Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Fri, 26 Feb 2021 17:45:54 +0100 Subject: [PATCH 2/2] update logic + add comment --- pandas/core/internals/array_manager.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pandas/core/internals/array_manager.py b/pandas/core/internals/array_manager.py index 9f1b5866960dc..8585dc5ebcdd4 100644 --- a/pandas/core/internals/array_manager.py +++ b/pandas/core/internals/array_manager.py @@ -452,10 +452,12 @@ def putmask(self, mask, new, align: bool = True): ) def diff(self, n: int, axis: int) -> ArrayManager: + axis = self._normalize_axis(axis) if axis == 1: - axis = 0 - elif axis == 0: + # DataFrame only calls this for n=0, in which case performing it + # with axis=0 is equivalent assert n == 0 + axis = 0 return self.apply(algos.diff, n=n, axis=axis) def interpolate(self, **kwargs) -> ArrayManager: