Python pandas.DataFrame.sort_values函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.sort_values方法的使用。

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None) [source]

沿任一轴按values排序。

参数:

bystr 或 str的list 

要排序的名称或名称列表。

1) 如果axis是0'index'

那么by可能包含索引级别and/or列标签。

2) 如果axis是1'columns'

那么by可能包含列级别and/or索引标签。

版本0.23.0中的更改:允许指定索引或列级名称。

axis {0‘index’, 1 ‘columns’}, 默认为 0

要排序的轴(axis)。

ascending bool 或 bools的list, 默认为 True

升序和降序排序。指定多个排序顺序的列表。

如果这是一个布尔的list,必须匹配的长度的by。

inplace bool, 默认为 False

如果为True,就地执行操作。

kind {‘quicksort’, ‘mergesort’, ‘heapsort’},

 默认为 ‘quicksort’

选择排序算法。有关更多信息,

请参见ndarray.np.sort。 

mergesort是唯一稳定的算法。

对于DataFrames

仅在对单个列或标签进行排序时才应用此选项。

na_position {‘first’, ‘last’}, 默认为 ‘last’

如果首先将NaN放在开头; 

最后将NaN放在最后。

ignore_index :bool, 默认为 False

如果为True,则结果轴将标记为0、1,...,n-1

1.0.0版的新功能。

keycallable, 可选的

在排序之前,将键函数应用于这些值。

这类似于内建函数中的key参数sorted()

但值得注意的区别是此key函数应被向量化。

它应该期望Series并返回与输入形状相同的Series。

它将应用于by独立的每一列。

1.1.0版中的新功能。

返回值:

DataFrameNone

如果inplace = False,则为具有排序值的DataFrame,否则为None

例子

>>> df = pd.DataFrame({
...     'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
...     'col2': [2, 1, 9, 8, 7, 4],
...     'col3': [0, 1, 9, 4, 2, 3],
...     'col4': ['a', 'B', 'c', 'D', 'e', 'F']
... })
>>> df
  col1  col2  col3 col4
0    A     2     0    a
1    A     1     1    B
2    B     9     9    c
3  NaN     8     4    D
4    D     7     2    e
5    C     4     3    F

按col1排序

>>> df.sort_values(by=['col1'])
  col1  col2  col3 col4
0    A     2     0    a
1    A     1     1    B
2    B     9     9    c
5    C     4     3    F
4    D     7     2    e
3  NaN     8     4    D

按多列排序

>>> df.sort_values(by=['col1', 'col2'])
  col1  col2  col3 col4
1    A     1     1    B
0    A     2     0    a
2    B     9     9    c
5    C     4     3    F
4    D     7     2    e
3  NaN     8     4    D

降序排列

>>> df.sort_values(by='col1', ascending=False)
  col1  col2  col3 col4
4    D     7     2    e
5    C     4     3    F
2    B     9     9    c
0    A     2     0    a
1    A     1     1    B
3  NaN     8     4    D

将NA放在首位

>>> df.sort_values(by='col1', ascending=False, na_position='first')
  col1  col2  col3 col4
3  NaN     8     4    D
4    D     7     2    e
5    C     4     3    F
2    B     9     9    c
0    A     2     0    a
1    A     1     1    B

按键功能排序

>>> df.sort_values(by='col4', key=lambda col: col.str.lower())
   col1  col2  col3 col4
0    A     2     0    a
1    A     1     1    B
2    B     9     9    c
3  NaN     8     4    D
4    D     7     2    e
5    C     4     3    F

文档pandas.DataFrame.sort_values

推荐阅读
cjavapy编程之路首页