3

I selected one column from the a DataFrame, then I got a Series. How can I sort the series? I used the Series.sort(), but it doesn't work.

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

Then I selected the column 'A'

df['A']

    A
 0  5
 1  0
 2  3
 3  8

After selected 'A' column, I got a Series, but with Series.sort(), it doesn't work.

df['A'].sort()

It shows the error:

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

So I used the Series.copy() function to copy the series, after that I sort the series, but there is no outcome.

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

But there is no result returned.

How can I fix the problem?

xirururu
  • 5,028
  • 9
  • 35
  • 64

3 Answers3

5

One of them will work for you -

df.sort('A',ascending=False,inplace=True)  #old version
df.sort_values('A',ascending=False,inplace=True) #new version
Peter Haddad
  • 78,874
  • 25
  • 140
  • 134
shikha singh
  • 498
  • 1
  • 5
  • 10
4

But there is no result returned.

That is because the sort is in place, it modifies the object. Try this

A = df['A'].copy()
A.sort()
print(A)
user25064
  • 2,020
  • 2
  • 16
  • 28
0

Since the sort() function is deprecated, one must use the sort_values(inplace=True) for inplace sorting instead (source).

So the code should look like this:

A = df['A'].copy()
A.sort_values(inplace=True)
Xema
  • 1,796
  • 1
  • 19
  • 28