AssertionError: Gaps in blk ref_locs when unstack() dataframe
To get the real data triggered the exception, add extra debug information
Modify
~/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py
add lines to class BlockManager()
def __init__(self)
print('BlockManager blocks')
pprint(self.blocks)
print('BlockManager axes')
pprint(self.axes)
You will the data:
_unstack_frame level -1 fill_value None vote vote2 ballot1 voteId NaN xx 100.0 10.0 False aaa 50.1 2.0 -1 \n 1.0 18.0 True NaN 23.0 26.0 b False 55.0 77.0 a \ 67.0 99.0 c 89.0 9.0 8 44.0 NaN
Modify
~/anaconda3/lib/python3.6/site-packages/pandas/core/reshape/reshape.py
def __unstack_frame(self, ...)
from pprint import pprint
print('_unstack_frame level {} fill_value {} {}'.format(level, fill_value, type(obj)))
pprint(obj)
You will see data:
BlockManager blocks (FloatBlock: slice(0, 16, 1), 16 x 8, dtype: float64,) BlockManager axes [MultiIndex(levels=[[u'vote', u'vote2'], [False, 8, u'\n', u' ', u'\', u'aaa', u'xx']], labels=[[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [-1, 0, 1, 2, 3, 4, 5, 6, -1, 0, 1, 2, 3, 4, 5, 6]], names=[None, u'voteId']), Index([nan, -1, False, True, u'', u'a', u'b', u'c'], dtype='object', name=u'ballot1')]
I did trigger an exception with another example:
File "/usr/lib64/python2.7/site-packages/pandas/core/internals.py", line 2902, in _rebuild_blknos_and_blklocs raise AssertionError("Gaps in blk ref_locs") AssertionError: Gaps in blk ref_locs
with debugging info
BlockManager blocks (FloatBlock: [-1, -1, -1], 3 x 2, dtype: float64,) BlockManager axes [Index([aaa, bbb, ccc], dtype='object'), Int64Index([0, 1], dtype='int64')]