关键词

详解pandas.DataFrame.sort_index()(按索引排序)函数使用方法

pandas.DataFrame.sort_index()的作用与使用方法:

sort_index()是pandas.DataFrame类中的一个方法,其作用是按照DataFrame的索引进行排序。

sort_index()可以按照行索引或列索引进行排序,默认情况下是按照行索引进行排序。

sort_index()的语法如下:

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False)

参数说明如下:

  • axis:指定按照行(axis=0)还是列(axis=1)进行排序,默认按照行进行排序。
  • level:指定按照多级索引的哪一级进行排序。
  • ascending:指定排序方式,True为升序(默认),False为降序。
  • inplace:指定是否在原DataFrame上修改;默认为False,不在原DataFrame上修改。
  • kind:指定排序算法,默认为快速排序(quicksort)。
  • na_position:指定缺失值的排序位置,'last'为放在最后(默认),'first'为放在最前。
  • sort_remaining:指定是否对多级索引剩余的级别进行排序,默认为True。
  • ignore_index:指定是否忽略索引,重新生成一个新的整数索引,默认为False,不忽略索引。

接下来我们举两个示例详细了解pandas.DataFrame.sort_index()函数。

示例1

import pandas as pd
import numpy as np

# 创建一个DataFrame对象
df = pd.DataFrame(np.random.randn(5, 4), index=[4, 2, 0, 1, 3], columns=['D', 'A', 'B', 'C'])
print('创建的DataFrame对象为:\n', df)

# 按照行索引进行升序排序
df_sort = df.sort_index()
print('按照行索引进行升序排序的结果为:\n', df_sort)

# 按照行索引进行降序排序
df_sort = df.sort_index(ascending=False)
print('按照行索引进行降序排序的结果为:\n', df_sort)

# 按照列名进行升序排序
df_sort = df.sort_index(axis=1)
print('按照列名进行升序排序的结果为:\n', df_sort)

输出:

创建的DataFrame对象为:
           D         A         B         C
4 -1.257657 -0.749841  1.457098  0.423774
2 -0.688276  0.685274 -1.116668 -1.971651
0 -0.756074  1.363849 -0.268599 -0.618124
1  0.420131 -0.293090  1.453239 -0.158057
3 -1.370626  0.758030 -0.009503 -1.154678
按照行索引进行升序排序的结果为:
           D         A         B         C
0 -0.756074  1.363849 -0.268599 -0.618124
1  0.420131 -0.293090  1.453239 -0.158057
2 -0.688276  0.685274 -1.116668 -1.971651
3 -1.370626  0.758030 -0.009503 -1.154678
4 -1.257657 -0.749841  1.457098  0.423774
按照行索引进行降序排序的结果为:
           D         A         B         C
4 -1.257657 -0.749841  1.457098  0.423774
3 -1.370626  0.758030 -0.009503 -1.154678
2 -0.688276  0.685274 -1.116668 -1.971651
1  0.420131 -0.293090  1.453239 -0.158057
0 -0.756074  1.363849 -0.268599 -0.618124
按照列名进行升序排序的结果为:
           A         B         C         D
4 -0.749841  1.457098  0.423774 -1.257657
2  0.685274 -1.116668 -1.971651 -0.688276
0  1.363849 -0.268599 -0.618124 -0.756074
1 -0.293090  1.453239 -0.158057  0.420131
3  0.758030 -0.009503 -1.154678 -1.370626

示例2

import pandas as pd

# 创建一个DataFrame对象
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C': [1, 2, 3, 4, 5, 6, 7, 8],
                   'D': [10, 9, 8, 7, 6, 5, 4, 3]})

# 设置多级索引
df = df.set_index(['A', 'B'])
print('设置多级索引后的DataFrame对象为:\n', df)

# 按照第一个索引(A)进行升序排序
df_sort = df.sort_index(level=0)
print('按照第一个索引进行升序排序的结果为:\n', df_sort)

# 按照第一个索引(A)进行升序排序,并且同时对第二个索引(B)进行降序排序
df_sort = df.sort_index(level=[0, 1], ascending=[True, False])
print('按照第一个索引进行升序排序,第二个索引进行降序排序的结果为:\n', df_sort)

输出:

设置多级索引后的DataFrame对象为:
          C   D
A   B         
foo one  1  10
bar one  2   9
foo two  3   8
bar three  4   7
foo two  5   6
    two  6   5
bar one  7   4
foo three  8   3
按照第一个索引进行升序排序的结果为:
          C   D
A   B         
bar one  2   9
    three  4   7
    one  7   4
foo one  1  10
    two  3   8
    two  5   6
    three  8   3
按照第一个索引进行升序排序,第二个索引进行降序排序的结果为:
          C   D
A   B         
bar three  4   7
    one  2   9
    one  7   4
foo two  3   8
    two  6   5
    two  5   6
    three  8   3
    one  1  10

本文链接:http://task.lmcjl.com/news/17730.html

展开阅读全文