【问题标题】: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

有没有一种简单的方法来交换和重新分组我的列索引?

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    swaplevelsort_index

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

    【讨论】:

    • .sort_index(1) 是关键。我曾尝试过swaplevel,但它并没有达到我想要的效果。谢谢!
    猜你喜欢
    • 2020-10-10
    • 2021-12-20
    • 2019-04-08
    • 2021-10-10
    • 2017-05-03
    • 2017-04-12
    • 1970-01-01
    • 2013-10-09
    • 2019-02-19
    相关资源
    最近更新 更多