1. 程式人生 > >pandas將DataFrame的列變成行索引

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、1、2
    #在使用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')