Pandas 之 Index

**1 index **
pandas 中的 index 是行索引或行标签。行标签可以说是 pandas 的灵魂一签,支撑了 pandas 很多强大的业务功能,比如多个数据框的 join, merge 操作,自动对齐等。
下面总结几个平时常用的关于 index 的操作
**2 列转 index **

有时,我们想把现有的数据框的某些列转化为 index,为之后的更多操作做准备。列转 index 实现方法如下:

  1. In [1]: import pandas as pd

  2. In [2]: df1 = pd.DataFrame({'a':[1,3,5],'b':[9,4,12]})

  3. In [3]: df1

  4. Out[3]:

  5. a b

  6. 0 1 9

  7. 1 3 4

  8. 2 5 12

  9. In [4]: df1.set_index('a',drop=False)

  10. Out[4]:

  11. a b

  12. a

  13. 1 1 9

  14. 3 3 4

  15. 5 5 12

  16. In [5]: df1.set_index('a',drop=True)

  17. Out[5]:

  18. b

  19. a

  20. 1 9

  21. 3 4

  22. 5 12

**3 index 转列 **

操作完成后,想再还原,即 index 转化为列,操作如下:
1. In [9]: df2.reset_index('a',drop=True)

  1. Out[9]:

  2. b

  3. 0 9

  4. 1 4

  5. 2 12

  6. In [10]: df2.reset_index('a',drop=False)

  7. Out[10]:

  8. a b

  9. 0 1 9

  10. 1 3 4

  11. 2 5 12

**4 index, 随心所欲 **

如果想按照某种规则,重新排序行数据或列数据,靠一个函数就可以做到,它就是 reindex, 设置一个
1. In [3]: df1

  1. Out[3]:

  2. a b

  3. 0 1 9

  4. 1 3 4

  5. 2 5 12

  6. In [12]: df1.reindex([0,3,2,1])

  7. Out[12]:

  8. a b

  9. 0 1.0 9.0

  10. 3 NaN NaN

  11. 2 5.0 12.0

  12. 1 3.0 4.0
    df1 原来有的行索引会重新按照最新的索引 [0,3,2,1] 重新对齐,原来没有的行索引 3,默认数据都填充为 NaN.

列数据的调整,也一样通过 reindex 实现,如下:
1. In [13]: df1.reindex(columns=['b','a','c'])

  1. Out[13]:

  2. b a c

  3. 0 9 1 NaN

  4. 1 4 3 NaN

  5. 2 12 5 NaN

以上是关于 index 调整的某些策略。欢迎纠正和增加。谢谢!