在 python pandas 中指定多索引的顺序

Specify the order of a multiindex in python pandas

我有一个带有多索引的熊猫数据框(最终将写入格式化的 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' does not support mutable operations.

如有任何建议,我们将不胜感激。

您可以 reindex 您的数据 (frame/Series) 像这样:

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