2016-11-03 4 views
5

После кода документации на нескольких индексации, я следующее:Перекачка/Заказ нескольких столбцов индекса в панд

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo'], 
      ['one', 'two', 'one', 'two', 'one', 'two']] 
tuples = list(zip(*arrays)) 

index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 

df2 = pd.DataFrame(np.random.randn(3, 6), index=['A', 'B', 'C'], columns=index) 

Это дает dataframe, который выглядит как:

first  bar     baz     foo 
second  one  two  one  two  one  two 
A  -0.398965 -1.103247 -0.530605 0.758178 1.462003 2.175783 
B  -0.356856 0.839281 0.429112 -0.217230 -2.409163 -0.725177 
C  -2.114794 2.035790 0.059812 -2.197898 -0.975623 -1.246470 

Моя проблема заключается в том, что в моем выпуске (в HTML-таблицу) я хотел бы группировать на основе индекса второго уровня, а не первого. Уступая что-то, что выглядит так:

second  one       two 
first  bar  baz  foo  bar  baz  foo 
A  -0.398965 -0.530605 1.462003 -1.103247 0.758178 2.175783 
B  -0.356856 0.429112 -2.409163 0.839281 -0.217230 -0.725177 
C  -2.114794 0.059812 -0.975623 2.035790 -2.197898 -1.246470 

Есть ли простой способ обмена и перегруппировки моих индексов столбцов?

ответ

5

swaplevel с sort_index

df2.swaplevel(0, 1, 1).sort_index(1) 

enter image description here

+0

.sort_index (1) был ключ. Я попробовал swaplevel, но это не совсем то, что я хотел. Благодаря! – MarkD

Смежные вопросы