向MultiIndex添加级别,删除而不会丢失

Art*_*r G 10 python pandas

假设我有一个DataFrame带有MultiIndex 的df,它的级别为L.

有没有办法从索引中删除L并再次添加?

df = df.index.drop('L')完全从DataFrame中删除L(不像df= df.reset_index()有一个drop参数).我当然可以df = df.reset_index().set_index(everything_but_L, inplace=True).

现在,让我们假设索引包含除L之外的所有内容,并且我想添加L. df.index.insert(0, df.L)不起作用.我当然可以打电话,df= df.reset_index().set_index(everything_including_L, inplace=True)但感觉不对.

我为什么需要这个?由于索引不必是唯一的,因此可能会发生我想要添加新列以使索引变得唯一的情况.在分割数据之后,一个级别的索引不再包含任何信息(例如我的索引是A,B和我在A = x上操作df但是我不想丢失A会发生这种情况下,删除可能很有用) index.droplevel('A')).

Art*_*r G 17

在当前版本(0.17.1)中,有可能

df.set_index(column_to_add, append=True, inplace=True)
Run Code Online (Sandbox Code Playgroud)

df.reset_index(level=column_to_remove_from_index).
Run Code Online (Sandbox Code Playgroud)

这与大量加速相比,重置n列,然后将n + 1添加到索引.