如何将名为“group”的列添加到DataFrame multiindex中

时间:2017-06-13 14:31:38

标签: python-3.x

我是python的新手,我对如何将多索引级别添加到DataFrame有疑问。 例如,我有像这样的DataFrame enter image description here

如何将名为“group”的列添加到DataFrame multiindex中,如下所示 enter image description here

谢谢

1 个答案:

答案 0 :(得分:0)

以下是向DataFrame索引添加新关卡的两种方法:

  • 使用pd.MultiIndex.from_arrays构建新索引:

    import pandas as pd
    df = pd.DataFrame({'val':[1,2,3]})
    df.index = pd.MultiIndex.from_arrays([df.index, ['A','B','C']], 
                                         names=['id','group'])
    print(df)
    

    产量

              val
    id group     
    0  A        1
    1  B        2
    2  C        3
    

    pd.MultiIndex.from_productpd.MultiIndex.from_tuples也可以提供帮助 你建立新的MultiIndex - 使用哪个取决于你的输入是什么样的。

    请注意,MultiIndex不可变 - 您无法向现有MultiIndex添加新关卡。要更改DataFrame的索引,只需为DataFrame的index属性指定一个新索引即可。 See also the docs有关MultiIndex s。

  • 的更全面讨论
  • 使用set_index将列值移动到索引中:

    import pandas as pd
    df = pd.DataFrame({'group':['A','B','C'],'val':[1,2,3]})
    #   group  val
    # 0     A    1
    # 1     B    2
    # 2     C    3
    
    df = df.set_index(['group'], append=True)
    print(df)
    

    产量

             val
      group     
    0 A        1
    1 B        2
    2 C        3
    

在这两种方法中,reassigning the index is generally faster比调用set_index