How do you update the levels of a pandas MultiIndex after slicing its DataFrame?

From version pandas 0.20.0+ use MultiIndex.remove_unused_levels:

print (df.index)
MultiIndex(levels=[['CAN', 'USA'], ['total']],
           labels=[[1], [0]],
           names=['country', 'sex'])

df.index = df.index.remove_unused_levels()

print (df.index)
MultiIndex(levels=[['USA'], ['total']],
           labels=[[0], [0]],
           names=['country', 'sex'])

Leave a Comment