
pandas提供了set_index方法可以将DataFrame的列(多列)变成行索引,通过reset_index方法可以将层次化索引的级别会被转移到列里面。
1、DataFrame的set_index方法
data = pd.DataFrame(np.arange(,).reshape(,),index=["a","b","c"],columns=["A","B","C"]) print(data) ''' A B C a b c ''' #将列索引为B的列变成data的行索引 print(data.set_index("B")) ''' A C B ''' #获取行索引 print(data.set_index("B").index) #Int64Index([, , ], 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 '''
2、DataFrame的reset_index方法
data = pd.DataFrame(np.arange(,).reshape(,),index=["a","b","c"],columns=["A","B","C"]) print(data) ''' A B C a b c ''' print(data.set_index(["C"])) ''' A B C ''' #相对于data来说行索引从原来的a、b、c变成了0、、 #在使用set_index方法的时候行索引就已经被修改了 print(data.set_index(["C"]).reset_index()) ''' C A B ''' print(data.index) #Index(['a', 'b', 'c'], dtype='object') print(data.set_index(["C"]).reset_index().index) #RangeIndex(start=, stop=, step=) print(data.set_index(["C"]).reset_index().columns) #Index(['C', 'A', 'B'], dtype='object')
参考:https://blog.****.net/sinat_29957455/article/details/79038658