@@ -265,7 +265,10 @@ cdef class SeriesBinGrouper:
265
265
cached_typ = self .typ(vslider.buf, index = cached_ityp,
266
266
name = name)
267
267
else :
268
- object .__setattr__ (cached_ityp, ' _data' , islider.buf)
268
+ # See the comment in indexes/base.py about _index_data.
269
+ # We need this for EA-backed indexes that have a reference
270
+ # to a 1-d ndarray like datetime / timedelta / period.
271
+ object .__setattr__ (cached_ityp, ' _index_data' , islider.buf)
269
272
cached_ityp._engine.clear_mapping()
270
273
object .__setattr__ (
271
274
cached_typ._data._block, ' values' , vslider.buf)
@@ -569,8 +572,11 @@ cdef class BlockSlider:
569
572
util.set_array_not_contiguous(x)
570
573
571
574
self .nblocks = len (self .blocks)
575
+ # See the comment in indexes/base.py about _index_data.
576
+ # We need this for EA-backed indexes that have a reference to a 1-d
577
+ # ndarray like datetime / timedelta / period.
572
578
self .idx_slider = Slider(
573
- self .frame.index.values , self .dummy.index.values )
579
+ self .frame.index._index_data , self .dummy.index._index_data )
574
580
575
581
self .base_ptrs = < char ** > malloc(sizeof(char * ) * len (self .blocks))
576
582
for i, block in enumerate (self .blocks):
@@ -594,7 +600,8 @@ cdef class BlockSlider:
594
600
595
601
# move and set the index
596
602
self .idx_slider.move(start, end)
597
- object .__setattr__ (self .index, ' _data' , self .idx_slider.buf)
603
+
604
+ object .__setattr__ (self .index, ' _index_data' , self .idx_slider.buf)
598
605
self .index._engine.clear_mapping()
599
606
600
607
cdef reset(self ):
0 commit comments