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

标签 python pandas multi-index

我有一个带有多重索引的 panda 数据框(最终将写入格式化的 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.

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

最佳答案

您可以重新索引您的数据(帧/系列),如下所示:

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

关于python - 在 python pandas 中指定多重索引的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668444/

相关文章:

python - 引用 DataFrame 的 MultiIndex 值不正确吗?

python - 为什么 "except"语句中的无效异常名称不会立即导致 NameError?

python - 如何使用两个变量迭代 xpath?

python - Pandas :对行组而不是单个行进行排序

python - 从编译的 csv 读取时,df.corr 将所有数据显示为 1,即使存在不同的数据

python - Pandas:具有多索引的 fillna() 方法 - NaN 填充了错误的列

python - 合并长度不等的多索引数据帧

python - 在有条件的keras中实现自定义损失函数

python - Python 中的懒惰评估?模块之间?

python - 用列表中的值替换 pandas.DataFrame 的 NaN 值