在熊猫中交换/排序多索引列
Posted
技术标签:
【中文标题】在熊猫中交换/排序多索引列【英文标题】:Swapping/Ordering multi-index columns in pandas 【发布时间】:2017-03-17 14:47:18 【问题描述】:按照关于多索引的文档代码,我执行以下操作:
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)
这会产生一个如下所示的数据框:
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
有没有一种简单的方法来交换和重新分组我的列索引?
【问题讨论】:
【参考方案1】:swaplevel
与 sort_index
df2.swaplevel(0, 1, 1).sort_index(1)
【讨论】:
.sort_index(1) 是关键。我曾尝试过swaplevel,但它并没有达到我想要的效果。谢谢!以上是关于在熊猫中交换/排序多索引列的主要内容,如果未能解决你的问题,请参考以下文章