當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pandas.DataFrame.sort_values用法及代碼示例


用法:

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

按任一軸上的值排序。

參數

bystr 或 str 列表

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

  • 如果 axis 為 0 或 ‘index’by 可能包含索引級別和/或列標簽。

  • 如果 axis 為 1 或 ‘columns’by 可能包含列級別和/或索引標簽。

axis{0 或 ‘index’,1 或 ‘columns’},默認 0

要排序的軸。

ascendingbool 或 bool 列表,默認為 True

升序與降序排序。指定多個排序順序的列表。如果這是一個布爾列表,則必須匹配 by 的長度。

inplace布爾值,默認為 False

如果為 True,則就地執行操作。

kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’},默認 ‘quicksort’

排序算法的選擇。另請參閱numpy.sort() 了解更多信息。 mergesortstable 是唯一穩定的算法。對於 DataFrame,此選項僅在對單個列或標簽進行排序時應用。

na_position{‘first’, ‘last’},默認 ‘last’

如果 first 則將 NaN 放在開頭; last 將 NaN 放在最後。

ignore_index布爾值,默認為 False

如果為 True,則生成的軸將標記為 0、1、...、n - 1。

key可調用的,可選的

在排序之前將鍵函數應用於值。這與內置sorted() 函數中的key 參數類似,但顯著的區別是該key 函數應該被矢量化。它應該期望 Series 並返回與輸入具有相同形狀的係列。它將獨立應用於by 中的每一列。

返回

DataFrame 或無

具有排序值的 DataFrame 或 None 如果 inplace=True

例子

>>> 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

使用 natsort <https://github.com/SethMMorton/natsort> 包,使用 key 參數進行自然排序。

>>> df = pd.DataFrame({
...    "time":['0hr', '128hr', '72hr', '48hr', '96hr'],
...    "value":[10, 20, 30, 40, 50]
... })
>>> df
    time  value
0    0hr     10
1  128hr     20
2   72hr     30
3   48hr     40
4   96hr     50
>>> from natsort import index_natsorted
>>> df.sort_values(
...    by="time",
...    key=lambda x:np.argsort(index_natsorted(df["time"]))
... )
    time  value
0    0hr     10
3   48hr     40
2   72hr     30
4   96hr     50
1  128hr     20

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.sort_values。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。