使用Pandas对DataFrame进行降序排序

71 投票
6 回答
201892 浏览
提问于 2025-04-18 15:00

我想把一个数据表按从大到小的顺序排列。

我在设置升序的参数时填了'False',但是我的排序结果还是从小到大。

我的代码是:

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])

但是输出结果是

  letter  one  two
2      b    1    3
0      a    2    5
1      a    3    4
3      b    4    2
4      c    5    1

6 个回答

0

从 pandas 库中导入 DataFrame,并且导入 pandas 库,命名为 pd。

接下来,创建一个字典 d,里面有三组数据:'one' 这一组有数字 [2, 3, 1, 4, 5],'two' 这一组有数字 [5, 4, 3, 2, 1],还有 'letter' 这一组有字母 ['a', 'a', 'b', 'b', 'c']。

然后,用这个字典 d 创建一个数据框 df。

#接下来检查下面的语句

通过 'one' 这一列对数据进行分组,然后统计每组的数量,并按照 'one' 这一列的值从大到小排序。

4
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_values(['one'], ascending=False)
test

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

25

对于pandas 0.17及以上版本,可以使用这个:

test = df.sort_values('one', ascending=False)

因为'one'在pandas数据框中是一个序列,所以pandas不接受以列表的形式传入的参数。

98

新的语法(可以是任意一种):

 test = df.sort_values(['one'], ascending=[False])
 test = df.sort_values(['one'], ascending=[0])
66

编辑:这个内容已经过时,请查看@Merlin的回答。

[False]是一个非空的列表,它和False是不一样的。你应该这样写:

test = df.sort('one', ascending=False)

撰写回答