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