feifanrensheng

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

分类:

技术点:

相关文章:

  • 2021-10-28
  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
  • 2021-09-21
  • 2023-01-17
  • 2022-12-23
  • 2021-08-15
猜你喜欢
  • 2022-02-01
  • 2022-02-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2021-10-28
相关资源
相似解决方案