2012-06-29 55 views
9

假設我有一個DataFrame DF具有多指標,它有水平L.添加水平多指標,除去不失

有沒有辦法從索引中移除L和重新添加呢?

df = df.index.drop('L')從數據框中完全刪除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和I以a = x操作df,但我不想丟失會發生的A與index.droplevel('A'))。

回答

15

在當前版本(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到該指數。