@@ -265,7 +265,10 @@ cdef class SeriesBinGrouper:
265265 cached_typ = self .typ(vslider.buf, index = cached_ityp,
266266 name = name)
267267 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)
269272 cached_ityp._engine.clear_mapping()
270273 object .__setattr__ (
271274 cached_typ._data._block, ' values' , vslider.buf)
@@ -569,8 +572,11 @@ cdef class BlockSlider:
569572 util.set_array_not_contiguous(x)
570573
571574 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.
572578 self .idx_slider = Slider(
573- self .frame.index.values , self .dummy.index.values )
579+ self .frame.index._index_data , self .dummy.index._index_data )
574580
575581 self .base_ptrs = < char ** > malloc(sizeof(char * ) * len (self .blocks))
576582 for i, block in enumerate (self .blocks):
@@ -594,7 +600,8 @@ cdef class BlockSlider:
594600
595601 # move and set the index
596602 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)
598605 self .index._engine.clear_mapping()
599606
600607 cdef reset(self ):
0 commit comments