用Python中的Pandas对系列进行排序

3

我从一个DataFrame选择了一列,然后得到了一个Series。如何对这个Series进行排序?我使用了Series.sort(),但它不起作用。

df = pd.DataFrame({'A': [5,0,3,8],
                    'B': ['B8', 'B9', 'B10', 'B11']})
df

    A   B
0   5   B8
1   0   B9
2   3   B10
3   8   B11

接下来我选择了'A'列。

df['A']

    A
 0  5
 1  0
 2  3
 3  8

在选择了“A”列之后,我得到了一个Series,但是使用Series.sort()排序时,它无法正常工作。

df['A'].sort()

错误提示如下:

"ValueError: This Series is a view of some other array, to sort in-place you must create a copy"

因此,我使用了Series.copy()函数来复制该系列,之后对该系列进行排序,但没有结果。

df['A'].copy().sort()

但是没有返回结果。

我该如何解决这个问题?


你使用的pandas版本是什么?df['A'].sort_values()能用吗? - EdChum
嗨@EdChum,我使用的是0.16.2版本,但sort_values()看起来也已经过时了。 - xirururu
2
sort_values 是新的方法,sort 在后续版本中已被弃用,请注意。 - EdChum
3个回答

5
有一种方法适合你 -
df.sort('A',ascending=False,inplace=True)  #old version
df.sort_values('A',ascending=False,inplace=True) #new version

1
很棒的回答 @shikha - Pyd

4
但是没有返回结果。这是因为排序是就地排序,它会修改对象。尝试使用以下代码:
A = df['A'].copy()
A.sort()
print(A)

0

由于sort()函数已被弃用,现在必须使用sort_values(inplace=True)进行原地排序(source)。

因此,代码应该像这样:

A = df['A'].copy()
A.sort_values(inplace=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接