Nielsou Akbrg
Nielsou Akbrg

Reputation: 221

pandas.reorder_levels with only one index

Pandas offers a feature to reorder index with the reorder_index function :

pandas.DataFrame({"A" : [1, 2, 3], "B" : [4,5,6], "C" : [7,8,9]}).set_index(["A", "B"]).reorder_levels(["B", "A"])

However it doesn't seem to work with single-indexed DataFrames :

pandas.DataFrame({"A" : [1, 2, 3], "B" : [4,5,6]}).set_index("A").reorder_levels(["A"])

Am I doing something incorrectly ?

PS : I know it doesn't make sens to reorder the Index with only one index, however it's a border effect and I usually tend to avoid un-necessary if statements for code clarity.

Upvotes: 0

Views: 69

Answers (1)

Dani Mesejo
Dani Mesejo

Reputation: 61920

Doing the following is equivalent to reordering:

import pandas as pd

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]}).set_index(["A", "B"])
print(df.reset_index().set_index(['B', 'A']))

Output

     C
B A   
4 1  7
5 2  8
6 3  9

And it works with a single index:

odf = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}).set_index("A")
print(odf)

Output

   B
A   
1  4
2  5
3  6

Upvotes: 1

Related Questions