Swapping/Ordering multi-index columns in pandas

◇◆丶佛笑我妖孽 提交于 2020-03-14 06:58:49

问题


Following the documentation code on multi-indexing, I do the following:

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)

This yields a dataframe that looks like:

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

My problem is that in my output (to an HTML table), I would like to group based on the second level index, rather than the first. Yielding something that looks like:

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

Is there an easy way to swap and re-group my column indices?


回答1:


swaplevel with sort_index

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



来源:https://stackoverflow.com/questions/40411300/swapping-ordering-multi-index-columns-in-pandas

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!