Python Pandas dataframe中的多级列索引降一级

Python Pandas dataframe中的多级列索引降一级

若要从多级列索引中降一级,请使用columns.droplevel()。我们使用Multiindex.from_tuples()逐列创建索引。

首先,按列创建索引 –

    items = pd.MultiIndex.from_tuples([("Col 1", "Col 1", "Col 1"),("Col 2", "Col 2", "Col 2"),("Col 3", "Col 3", "Col 3")])

接下来,创建一个多级索引数组并形成一个多级数据帧。

    arr = [
        np.array(['car', 'car', 'car','bike','bike', 'bike', 'truck', 'truck', 'truck']),
        np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])
    ]

    # 形成多级数据帧
    dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr,columns=items)

标记索引 –

    dataFrame.index.names = ['level 0', 'level 1']

在索引0处删除一级 –

    dataFrame.columns = dataFrame.columns.droplevel(0)

更多Pandas相关文章,请阅读:Pandas 教程

示例

以下是代码:

    import numpy as np
    import pandas as pd

    items = pd.MultiIndex.from_tuples([("Col 1", "Col 1", "Col 1"),("Col 2", "Col 2", "Col 2"),("Col 3", "Col 3", "Col 3")])

    # multiindex array
    arr = [
        np.array(['car', 'car', 'car','bike','bike', 'bike', 'truck', 'truck', 'truck']),
        np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])
    ]

    # forming multiindex dataframe
    dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr,columns=items)

    # labelling index
    dataFrame.index.names = ['level 0', 'level 1']
    print"DataFrame...\n",dataFrame

    print"\nDropping a level...\n"
    dataFrame.columns = dataFrame.columns.droplevel(0)

    print"Updated DataFrame..\n",dataFrame

输出

这将产生以下输出:

    DataFrame...
    Col 1 Col 2 Col 3
    Col 1 Col 2 Col 3
    Col 1 Col 2 Col 3
    level 0 level 1
    car valueA 1.691127 0.315145 -0.695925
          valueB -2.077182 -2.027643 -0.523965
          valueC 1.021402 -0.384421 0.640215
    bike valueA -2.271217 0.197185 0.304847
          valueB 0.119615 -0.520491 -0.746547
          valueC 1.856888 -0.491540 -1.754604
    truck valueA 0.829854 -0.204102 -1.130511
          valueB 0.310692 0.119087 -0.244919
          valueC -0.245934 -2.141639 -1.298278

    Dropping a level...

    Updated DataFrame..
        Col 1 Col 2 Col 3
        Col 1 Col 2 Col 3
    level 1
    valueA 1.691127 0.315145 -0.695925
    valueB -2.077182 -2.027643 -0.523965
    valueC 1.021402 -0.384421 0.640215
       bike valueA -2.271217 0.197185 0.304847
    valueB 0.119615 -0.520491 -0.746547
    valueC 1.856888 -0.491540 -1.754604
    truck valueA 0.829854 -0.204102 -1.130511
    valueB 0.310692 0.119087 -0.244919
    valueC -0.245934 -2.141639 -1.298278

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程