Skip to content

Commit 77e4f41

Browse files
jbrockmendelproost
authored andcommitted
BUG: fix AttributeError raised in libreduction (pandas-dev#29100)
1 parent de97806 commit 77e4f41

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

pandas/_libs/reduction.pyx

+12-7
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ cdef class SeriesBinGrouper:
203203
self.f = f
204204

205205
values = series.values
206-
if not values.flags.c_contiguous:
206+
if util.is_array(values) and not values.flags.c_contiguous:
207+
# e.g. Categorical has no `flags` attribute
207208
values = values.copy('C')
208209
self.arr = values
209210
self.typ = series._constructor
@@ -230,7 +231,8 @@ cdef class SeriesBinGrouper:
230231
values = dummy.values
231232
if values.dtype != self.arr.dtype:
232233
raise ValueError('Dummy array must be same dtype')
233-
if not values.flags.contiguous:
234+
if util.is_array(values) and not values.flags.contiguous:
235+
# e.g. Categorical has no `flags` attribute
234236
values = values.copy()
235237
index = dummy.index.values
236238
if not index.flags.contiguous:
@@ -332,7 +334,8 @@ cdef class SeriesGrouper:
332334
self.f = f
333335

334336
values = series.values
335-
if not values.flags.c_contiguous:
337+
if util.is_array(values) and not values.flags.c_contiguous:
338+
# e.g. Categorical has no `flags` attribute
336339
values = values.copy('C')
337340
self.arr = values
338341
self.typ = series._constructor
@@ -356,7 +359,8 @@ cdef class SeriesGrouper:
356359
if (dummy.dtype != self.arr.dtype
357360
and values.dtype != self.arr.dtype):
358361
raise ValueError('Dummy array must be same dtype')
359-
if not values.flags.contiguous:
362+
if util.is_array(values) and not values.flags.contiguous:
363+
# e.g. Categorical has no `flags` attribute
360364
values = values.copy()
361365
index = dummy.index.values
362366
if not index.flags.contiguous:
@@ -467,12 +471,13 @@ cdef class Slider:
467471
char *orig_data
468472

469473
def __init__(self, object values, object buf):
470-
assert(values.ndim == 1)
474+
assert (values.ndim == 1)
471475

472-
if not values.flags.contiguous:
476+
if util.is_array(values) and not values.flags.contiguous:
477+
# e.g. Categorical has no `flags` attribute
473478
values = values.copy()
474479

475-
assert(values.dtype == buf.dtype)
480+
assert (values.dtype == buf.dtype)
476481
self.values = values
477482
self.buf = buf
478483
self.stride = values.strides[0]

0 commit comments

Comments
 (0)