您想要使用稳定的排序算法(即合并排序)对值进行排序:
\n\ndf.sort_values(by=\'Type\', kind=\'mergesort\') \nRun Code Online (Sandbox Code Playgroud)\n\n从链接的答案:
\n\n\n\n\n如果具有相等键的两个对象在排序输出中出现的顺序与它们在要排序的输入数组中出现的顺序相同,则称排序算法是稳定的。
\n
来自熊猫文档:
\n\n\n\n\nkind : {\xe2\x80\x98quicksort\xe2\x80\x99, \xe2\x80\x98mergesort\xe2\x80\x99, \xe2\x80\x98heapsort\xe2\x80\x99}, 默认 \xe2\x80\x98quicksort \xe2\x80\x99
\n\n排序算法的选择。另请参阅 ndarray.np.sort 了解更多信息。归并排序是唯一稳定的算法。对于 DataFrame,\n 仅当对单个列或标签进行排序时才应用此选项。
\n
更新:正如@ALollz正确指出的那样,最好先将所有值转换为小写,然后进行排序(即,否则“Bird”将被放置在结果中的“aligator”之前):
\n\ndf[\'temp\'] = df[\'Type\'].str.lower()\ndf = df.sort_values(by=\'temp\', kind=\'mergesort\')\ndf = df.drop(\'temp\', axis=1) \nRun Code Online (Sandbox Code Playgroud)\n
小智 1
df.sort_values(by=['Type']) [1]
Run Code Online (Sandbox Code Playgroud)
您可以执行自己的排序功能[2],字符串可以直接比较 stringRow2 < stringRow3 。
[1] https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.DataFrame.sort_values.html [2]使用列值函数对 pandas DataFrame 进行排序