在python pandas中指定multiindex的顺序

时间:2017-04-27 21:46:39

标签: python pandas multi-index

我有一个带有多索引的熊猫数据框(最终将写入格式化的Excel文件),类似于以下内容:

first  second
one    bar      -0.292975
       baz      -0.176312
       foo      -0.458917
       qux       0.966987
two    bar       1.615486
       baz       0.875479
       foo      -3.092365
       qux      -2.348825

我想指定第二个索引的顺序(注意baz总是在底部),如下所示:

first  second
one    bar      -0.292975
       foo      -0.458917
       qux       0.966987
       baz      -0.176312
two    bar       1.615486
       foo      -3.092365
       qux      -2.348825
       baz       0.875479

我试图像这样切片数据框,但它不会改变输出:

myDF.loc[(slice(None),['bar','foo', 'qux', 'baz']),:]

我试图改变索引本身

myDF.index.levels[1] = pd.Index(['bar','foo', 'qux', 'baz'])

但出错:

  

TypeError:'FrozenList'不支持可变操作。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:4)

您可以reindex您的数据(框架/系列),如下所示:

new_index = ['bar','foo', 'qux', 'baz']
v.reindex(new_index, level=1)

#first  second
#one    bar      -0.292975
#       foo      -0.458917
#       qux       0.966987
#       baz      -0.176312
#two    bar       1.615486
#       foo      -3.092365
#       qux      -2.348825
#       baz       0.875479
#Name: value, dtype: float64