I have a multi-index pd.DataFrame
. I want the index to be sorted in ascending order. However, the outermost level_1
is an exception. This level should be sorted according to ``["B", "A", "C"].
import pandas as pd
import numpy as np
# Create multi-index
index = pd.MultiIndex.from_tuples([
('B', 'Y', 'II', 'D'),
('A', 'X', 'I', 'A'),
('C', 'Z', 'II', 'B'),
('A', 'Y', 'I', 'B'),
('C', 'X', 'I', 'A')
], names=['level_1', 'level_2', 'level_3', 'level_4'])
# Create DataFrame with random values
data = np.random.randint(0, 10, (5, 2))
df = pd.DataFrame(data, index=index, columns=['column1', 'column2'])
print(df)
column1 column2
level_1 level_2 level_3 level_4
B Y II D 1 7
A X I B 9 4
C Z I B 5 3
A Y I A 2 4
C X II A 9 2
I am looking for the following result:
column1 column2
level_1 level_2 level_3 level_4
B Y II D 1 7
A X I B 9 4
A Y I A 2 4
C X II A 9 2
C Z I B 5 3