用法:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
按任一軸上的值排序。
- by:str 或 str 列表
要排序的名稱或名稱列表。
如果
axis
為 0 或‘index’
則by
可能包含索引級別和/或列標簽。如果
axis
為 1 或‘columns’
則by
可能包含列級別和/或索引標簽。
- axis:{0 或 ‘index’,1 或 ‘columns’},默認 0
要排序的軸。
- ascending:bool 或 bool 列表,默認為 True
升序與降序排序。指定多個排序順序的列表。如果這是一個布爾列表,則必須匹配 by 的長度。
- inplace:布爾值,默認為 False
如果為 True,則就地執行操作。
- kind:{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’},默認 ‘quicksort’
排序算法的選擇。另請參閱
numpy.sort()
了解更多信息。mergesort
和stable
是唯一穩定的算法。對於 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
相關用法
- Python pandas.DataFrame.sort_index用法及代碼示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代碼示例
- Python pandas.DataFrame.select_dtypes用法及代碼示例
- Python pandas.DataFrame.size用法及代碼示例
- Python pandas.DataFrame.subtract用法及代碼示例
- Python pandas.DataFrame.stack用法及代碼示例
- Python pandas.DataFrame.set_index用法及代碼示例
- Python pandas.DataFrame.shape用法及代碼示例
- Python pandas.DataFrame.swaplevel用法及代碼示例
- Python pandas.DataFrame.sub用法及代碼示例
- Python pandas.DataFrame.shift用法及代碼示例
- Python pandas.DataFrame.set_flags用法及代碼示例
- Python pandas.DataFrame.sparse.to_dense用法及代碼示例
- Python pandas.DataFrame.squeeze用法及代碼示例
- Python pandas.DataFrame.std用法及代碼示例
- Python pandas.DataFrame.sample用法及代碼示例
- Python pandas.DataFrame.set_axis用法及代碼示例
- Python pandas.DataFrame.sum用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.sort_values。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。