假设我有一个带有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'))。
答案 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添加到索引。