如何在pythonpandas中将数据框sorting为两列或更多列?

假设我有一个数据框与列ab&c,我想sortingdataframe列b按升序和列c降序,我该怎么做?

从0.17.0版本开始, sort方法已被弃用,以支持sort_valuessort在0.20.0版本中完全删除。 参数(和结果)保持不变:

 df.sort_values(['a', 'b'], ascending=[True, False]) 

您可以使用sort的升序参数:

 df.sort(['a', 'b'], ascending=[True, False]) 

例如:

 In [11]: df1 = pd.DataFrame(np.random.randint(1, 5, (10,2)), columns=['a','b']) In [12]: df1.sort(['a', 'b'], ascending=[True, False]) Out[12]: ab 2 1 4 7 1 3 1 1 2 3 1 2 4 3 2 6 4 4 0 4 3 9 4 3 5 4 1 8 4 1 

正如@renadeen评论的那样

sorting不是默认的! 所以你应该把sort方法的结果赋给一个variables,或者在方法调用中joininplace = True。

也就是说,如果你想重用df1作为一个sorting的DataFrame:

 df1 = df1.sort(['a', 'b'], ascending=[True, False]) 

要么

 df1.sort(['a', 'b'], ascending=[True, False], inplace=True) 

从pandas 0.17.0开始, DataFrame.sort()已被弃用,并被设置为在将来版本的pandas中被删除。 现在,按值sorting数据DataFrame.sort_valuesDataFrame.sort_values

因此,现在你的问题的答案是

 df.sort_values(['b', 'c'], ascending=[True, False], inplace=True)