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\')
参考:https://blog.csdn.net/sinat_29957455/article/details/79038658