pandas将DataFrame的列变成行索引

pandas提供了set_index方法可以将DataFrame的列(多列)变成行索引,通过reset_index方法可以将层次化索引的级别会被转移到列里面。

1、DataFrame的set_index方法

    data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])

    print(data)

    '''

       A  B  C

    a  1  2  3

    b  4  5  6

    c  7  8  9

    '''

    #将列索引为B的列变成data的行索引

    print(data.set_index("B"))

    '''

      A  C

    B

    2  1  3

    5  4  6

    8  7  9

    '''

    #获取行索引

    print(data.set_index("B").index)

    #Int64Index([2, 5, 8], dtype='int64', name='B')

    #获取列索引

    print(data.set_index("B").columns)

    #Index(['A', 'C'], dtype='object')

    #将列索引为A和C的列变成行索引,层次化索引

    print(data.set_index(["A","C"]))

    '''

         B

    A C

    1 3  2

    4 6  5

    7 9  8

    '''

2、DataFrame的reset_index方法

data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])

    print(data)

    '''

       A  B  C

    a  1  2  3

    b  4  5  6

    c  7  8  9

    '''

    print(data.set_index(["C"]))

    '''

       A  B

    C

    3  1  2

    6  4  5

    9  7  8

    '''

    #相对于data来说行索引从原来的a、b、c变成了0、12

    #在使用set_index方法的时候行索引就已经被修改了

    print(data.set_index(["C"]).reset_index())

    '''

       C  A  B

    0  3  1  2

    1  6  4  5

    2  9  7  8

    '''

    print(data.index)

    #Index(['a', 'b', 'c'], dtype='object')

    print(data.set_index(["C"]).reset_index().index)

    #RangeIndex(start=0, stop=3, step=1)

    print(data.set_index(["C"]).reset_index().columns)

    #Index(['C', 'A', 'B'], dtype='object')

参考:https://blog.csdn.net/sinat_29957455/article/details/79038658

posted @ 2018-09-03 17:12  feifanren  阅读(11477)  评论(0编辑  收藏  举报