pandas.DataFrame.sort_values # 数据框。sort_values ( by , * , axis = 0 , ascending = True , inplace = False , kind = 'quicksort' , na_position = 'last' , ignore_index = False , key = None ) [来源] # 按沿任一轴的值排序。 参数: 通过str 或 str 列表排序依据的名称或名称列表。 如果axis为 0 或“index”,则by可能包含索引级别和/或列标签。 如果axis为 1 或“列”,则by可能包含列级别和/或索引标签。 轴“{0或'索引',1或'列'}”,默认0要排序的轴。 升序布尔值或布尔值列表,默认 True升序与降序排序。指定多个排序顺序的列表。如果这是一个布尔列表,则必须匹配 by 的长度。 inplace布尔值,默认 False如果为 True,则就地执行操作。 kind {'quicksort', 'mergesort', 'heapsort', 'stable'}, 默认 'quicksort'排序算法的选择。另请参阅numpy.sort()了解更多信息。归并排序和稳定是唯一稳定的算法。对于 DataFrame,此选项仅在对单个列或标签进行排序时应用。 na_position {'第一个','最后一个'},默认'最后一个'如果是第一个,则将 NaN 放在开头;最后将 NaN 放在末尾。 ignore_index bool,默认 False如果为 True,则生成的轴将标记为 0、1、...、n - 1。 键可调用,可选在排序之前将键函数应用于值。这与内置函数中的key参数类似sorted(),显着的区别是该key函数应该被向量化。它应该期望 a Series并返回一个与输入形状相同的 Series。它将独立地应用于每一列。 返回: 数据框或无具有排序值的 DataFrame 或 None if inplace=True。 也可以看看 DataFrame.sort_index按索引对 DataFrame 进行排序。 Series.sort_values系列的类似方法。 例子 >>> 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 按第 1 列排序 >>> 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