diff --git a/pandas/_libs/groupby.pyx b/pandas/_libs/groupby.pyx index 43bf6d9dd1fee..40e82798c0753 100644 --- a/pandas/_libs/groupby.pyx +++ b/pandas/_libs/groupby.pyx @@ -497,8 +497,9 @@ def _group_add(complexfloating_t[:, :] out, raise ValueError("len(index) != len(labels)") nobs = np.zeros((out).shape, dtype=np.int64) - sumx = np.zeros_like(out) - compensation = np.zeros_like(out) + # the below is equivalent to `np.zeros_like(out)` but faster + sumx = np.zeros((out).shape, dtype=(out).base.dtype) + compensation = np.zeros((out).shape, dtype=(out).base.dtype) N, K = (values).shape @@ -555,7 +556,7 @@ def _group_prod(floating[:, :] out, raise ValueError("len(index) != len(labels)") nobs = np.zeros((out).shape, dtype=np.int64) - prodx = np.ones_like(out) + prodx = np.ones((out).shape, dtype=(out).base.dtype) N, K = (values).shape @@ -608,7 +609,7 @@ def _group_var(floating[:, :] out, raise ValueError("len(index) != len(labels)") nobs = np.zeros((out).shape, dtype=np.int64) - mean = np.zeros_like(out) + mean = np.zeros((out).shape, dtype=(out).base.dtype) N, K = (values).shape @@ -665,8 +666,9 @@ def _group_mean(floating[:, :] out, raise ValueError("len(index) != len(labels)") nobs = np.zeros((out).shape, dtype=np.int64) - sumx = np.zeros_like(out) - compensation = np.zeros_like(out) + # the below is equivalent to `np.zeros_like(out)` but faster + sumx = np.zeros((out).shape, dtype=(out).base.dtype) + compensation = np.zeros((out).shape, dtype=(out).base.dtype) N, K = (values).shape