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

时间:2012-06-29 15:09:29

标签: python pandas

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

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

df = df.index.drop('L')完全从DataFrame中删除L(与具有drop参数的df= df.reset_index()不同)。 我当然可以做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'))。

1 个答案:

答案 0 :(得分:17)

在当前版本(0.17.1)中,可以

df.set_index(column_to_add, append=True, inplace=True)

df.reset_index(level=column_to_remove_from_index).

这伴随着大幅加速而不是重置n列然后将n + 1添加到索引。