python,用pandas排序降序数据帧

use*_*476 26 python sorting pandas

我正在尝试通过降序对数据帧进行排序.我在提升的论证中加上'假',但我的命令仍在提升.

我的代码是:

from pandas import DataFrame
import pandas as pd

d = {'one':[2,3,1,4,5],
     'two':[5,4,3,2,1],
     'letter':['a','a','b','b','c']}

df = DataFrame(d)

test = df.sort(['one'], ascending=[False])
Run Code Online (Sandbox Code Playgroud)

但输出是

  letter  one  two
2      b    1    3
0      a    2    5
1      a    3    4
3      b    4    2
4      c    5    1
Run Code Online (Sandbox Code Playgroud)

Mer*_*lin 41

新语法(或者):

 test = df.sort_values(['one'], ascending=[False])
 test = df.sort_values(['one'], ascending=[0])
Run Code Online (Sandbox Code Playgroud)

  • 您也可以对多列执行此操作: test = df.sort_values(['one','two'], ascending=[0,0]) (3认同)

U2E*_*EF1 35

编辑:这已经过时了,请参阅@Merlin的回答.

[False]作为一个非空的列表,是不一样的False.你应该写:

test = df.sort('one', ascending=False)
Run Code Online (Sandbox Code Playgroud)

  • 只是为了轻轻地指向下面的答案以使用最新的Pandas版本。 (3认同)

小智 15

对于0.17及以上的熊猫,请使用:

test = df.sort_values('one', ascending=False)
Run Code Online (Sandbox Code Playgroud)

由于'one'是pandas数据框中的一个系列,因此pandas不会以列表的形式接受参数.