Skip to content

Commit de9e867

Browse files
WillAydharisbal
authored and
harisbal
committed
Removed if...else for K > 1 (pandas-dev#19734)
1 parent c0f761d commit de9e867

File tree

1 file changed

+47
-129
lines changed

1 file changed

+47
-129
lines changed

pandas/_libs/groupby_helper.pxi.in

+47-129
Original file line numberDiff line numberDiff line change
@@ -56,36 +56,19 @@ def group_add_{{name}}(ndarray[{{dest_type2}}, ndim=2] out,
5656

5757
with nogil:
5858

59-
if K > 1:
60-
61-
for i in range(N):
62-
lab = labels[i]
63-
if lab < 0:
64-
continue
65-
66-
counts[lab] += 1
67-
for j in range(K):
68-
val = values[i, j]
69-
70-
# not nan
71-
if val == val:
72-
nobs[lab, j] += 1
73-
sumx[lab, j] += val
74-
75-
else:
76-
77-
for i in range(N):
78-
lab = labels[i]
79-
if lab < 0:
80-
continue
59+
for i in range(N):
60+
lab = labels[i]
61+
if lab < 0:
62+
continue
8163

82-
counts[lab] += 1
83-
val = values[i, 0]
64+
counts[lab] += 1
65+
for j in range(K):
66+
val = values[i, j]
8467

8568
# not nan
8669
if val == val:
87-
nobs[lab, 0] += 1
88-
sumx[lab, 0] += val
70+
nobs[lab, j] += 1
71+
sumx[lab, j] += val
8972

9073
for i in range(ncounts):
9174
for j in range(K):
@@ -119,33 +102,19 @@ def group_prod_{{name}}(ndarray[{{dest_type2}}, ndim=2] out,
119102
N, K = (<object> values).shape
120103

121104
with nogil:
122-
if K > 1:
123-
for i in range(N):
124-
lab = labels[i]
125-
if lab < 0:
126-
continue
127-
128-
counts[lab] += 1
129-
for j in range(K):
130-
val = values[i, j]
131-
132-
# not nan
133-
if val == val:
134-
nobs[lab, j] += 1
135-
prodx[lab, j] *= val
136-
else:
137-
for i in range(N):
138-
lab = labels[i]
139-
if lab < 0:
140-
continue
105+
for i in range(N):
106+
lab = labels[i]
107+
if lab < 0:
108+
continue
141109

142-
counts[lab] += 1
143-
val = values[i, 0]
110+
counts[lab] += 1
111+
for j in range(K):
112+
val = values[i, j]
144113

145114
# not nan
146115
if val == val:
147-
nobs[lab, 0] += 1
148-
prodx[lab, 0] *= val
116+
nobs[lab, j] += 1
117+
prodx[lab, j] *= val
149118

150119
for i in range(ncounts):
151120
for j in range(K):
@@ -231,31 +200,18 @@ def group_mean_{{name}}(ndarray[{{dest_type2}}, ndim=2] out,
231200
N, K = (<object> values).shape
232201

233202
with nogil:
234-
if K > 1:
235-
for i in range(N):
236-
lab = labels[i]
237-
if lab < 0:
238-
continue
239-
240-
counts[lab] += 1
241-
for j in range(K):
242-
val = values[i, j]
243-
# not nan
244-
if val == val:
245-
nobs[lab, j] += 1
246-
sumx[lab, j] += val
247-
else:
248-
for i in range(N):
249-
lab = labels[i]
250-
if lab < 0:
251-
continue
203+
for i in range(N):
204+
lab = labels[i]
205+
if lab < 0:
206+
continue
252207

253-
counts[lab] += 1
254-
val = values[i, 0]
208+
counts[lab] += 1
209+
for j in range(K):
210+
val = values[i, j]
255211
# not nan
256212
if val == val:
257-
nobs[lab, 0] += 1
258-
sumx[lab, 0] += val
213+
nobs[lab, j] += 1
214+
sumx[lab, j] += val
259215

260216
for i in range(ncounts):
261217
for j in range(K):
@@ -670,43 +626,24 @@ def group_max_{{name}}(ndarray[{{dest_type2}}, ndim=2] out,
670626
N, K = (<object> values).shape
671627

672628
with nogil:
673-
if K > 1:
674-
for i in range(N):
675-
lab = labels[i]
676-
if lab < 0:
677-
continue
678-
679-
counts[lab] += 1
680-
for j in range(K):
681-
val = values[i, j]
682-
683-
# not nan
684-
{{if name == 'int64'}}
685-
if val != {{nan_val}}:
686-
{{else}}
687-
if val == val and val != {{nan_val}}:
688-
{{endif}}
689-
nobs[lab, j] += 1
690-
if val > maxx[lab, j]:
691-
maxx[lab, j] = val
692-
else:
693-
for i in range(N):
694-
lab = labels[i]
695-
if lab < 0:
696-
continue
629+
for i in range(N):
630+
lab = labels[i]
631+
if lab < 0:
632+
continue
697633

698-
counts[lab] += 1
699-
val = values[i, 0]
634+
counts[lab] += 1
635+
for j in range(K):
636+
val = values[i, j]
700637

701638
# not nan
702639
{{if name == 'int64'}}
703640
if val != {{nan_val}}:
704641
{{else}}
705642
if val == val and val != {{nan_val}}:
706643
{{endif}}
707-
nobs[lab, 0] += 1
708-
if val > maxx[lab, 0]:
709-
maxx[lab, 0] = val
644+
nobs[lab, j] += 1
645+
if val > maxx[lab, j]:
646+
maxx[lab, j] = val
710647

711648
for i in range(ncounts):
712649
for j in range(K):
@@ -744,43 +681,24 @@ def group_min_{{name}}(ndarray[{{dest_type2}}, ndim=2] out,
744681
N, K = (<object> values).shape
745682

746683
with nogil:
747-
if K > 1:
748-
for i in range(N):
749-
lab = labels[i]
750-
if lab < 0:
751-
continue
752-
753-
counts[lab] += 1
754-
for j in range(K):
755-
val = values[i, j]
756-
757-
# not nan
758-
{{if name == 'int64'}}
759-
if val != {{nan_val}}:
760-
{{else}}
761-
if val == val and val != {{nan_val}}:
762-
{{endif}}
763-
nobs[lab, j] += 1
764-
if val < minx[lab, j]:
765-
minx[lab, j] = val
766-
else:
767-
for i in range(N):
768-
lab = labels[i]
769-
if lab < 0:
770-
continue
684+
for i in range(N):
685+
lab = labels[i]
686+
if lab < 0:
687+
continue
771688

772-
counts[lab] += 1
773-
val = values[i, 0]
689+
counts[lab] += 1
690+
for j in range(K):
691+
val = values[i, j]
774692

775693
# not nan
776694
{{if name == 'int64'}}
777695
if val != {{nan_val}}:
778696
{{else}}
779697
if val == val and val != {{nan_val}}:
780698
{{endif}}
781-
nobs[lab, 0] += 1
782-
if val < minx[lab, 0]:
783-
minx[lab, 0] = val
699+
nobs[lab, j] += 1
700+
if val < minx[lab, j]:
701+
minx[lab, j] = val
784702

785703
for i in range(ncounts):
786704
for j in range(K):

0 commit comments

Comments
 (0)