From 79b5263b2fae892785aec5a0c727a08ecb02cff4 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Wed, 8 Jul 2020 20:12:35 +0100 Subject: [PATCH 1/2] Performance regression in stat_ops.FrameMultiIndexOps.time_op --- pandas/core/groupby/groupby.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index d039b715b3c08..79bf0a222a82d 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -1434,16 +1434,7 @@ def std(self, ddof: int = 1): Series or DataFrame Standard deviation of values within each group. """ - return self._get_cythonized_result( - "group_var_float64", - aggregate=True, - needs_counts=True, - needs_values=True, - needs_2d=True, - cython_dtype=np.dtype(np.float64), - post_processing=lambda vals, inference: np.sqrt(vals), - ddof=ddof, - ) + return self.var(ddof=ddof).apply(np.sqrt) @Substitution(name="groupby") @Appender(_common_see_also) From 81386358ef91327df945fe76c2d876da65112c62 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Wed, 8 Jul 2020 20:51:29 +0100 Subject: [PATCH 2/2] fixup for as_index=False --- pandas/core/groupby/groupby.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index 79bf0a222a82d..93ee65b6ddd57 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -1434,7 +1434,18 @@ def std(self, ddof: int = 1): Series or DataFrame Standard deviation of values within each group. """ - return self.var(ddof=ddof).apply(np.sqrt) + result = self.var(ddof=ddof) + if result.ndim == 1: + result = np.sqrt(result) + else: + cols = result.columns.get_indexer_for( + result.columns.difference(self.exclusions).unique() + ) + # TODO(GH-22046) - setting with iloc broken if labels are not unique + # .values to remove labels + result.iloc[:, cols] = np.sqrt(result.iloc[:, cols]).values + + return result @Substitution(name="groupby") @Appender(_common_see_also)