2013-03-25 2 views
4

У меня есть панд DataFrame со структурой, подобной этой:Переименование один элемент уровня в панд мультииндексных

Name Location Position Data1 Data2 
Foo  loc1  12345  present absent 
Foo2 loc2  67890  absent present 

где Name, Location и Position являются уровни мультииндексных. Однако мне нужно переименовать один уровень индекса: для этого примера мне нужно изменить Foo2 на Bar.

Я думал DataFrame.rename() будет делать эту работу, однако, если я указываю

new_df = old_df.rename(index={"Foo2": "Bar"}) 

это не меняет индекс, и хуже, он разглаживает ее.

Является ли это тем, что я хочу сделать возможным? Или я попадаю в панды?

+0

Спасибо, в то время, когда я работал, я отправлю свое решение позже, вычеркнув открытую ошибку. – Einar

ответ

4

Функция rename должна преобразовывать словарь в картограф и применять его к каждому индексу. Однако для случая MultiIndex он проходит только по каждому кортежу, но не по каждому индексу. Я исправил его и сделал pull request.

+0

Хорошая работа! Теперь он находится в мастер-классе, так что будет в версии 0.11 :) –

+0

Спасибо, я поеду завтра утром и отдам его. – Einar

Смежные вопросы