'python, sort descending dataframe with pandas
I'm trying to sort a dataframe by descending. I put 'False' in the ascending argument, but my order is still ascending.
My code is:
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])
but the output is
letter one two
2 b 1 3
0 a 2 5
1 a 3 4
3 b 4 2
4 c 5 1
Solution 1:[1]
Edit: This is out of date, see @Merlin's answer.
[False]
, being a nonempty list, is not the same as False
. You should write:
test = df.sort('one', ascending=False)
Solution 2:[2]
New syntax (either):
test = df.sort_values(['one'], ascending=[False])
test = df.sort_values(['one'], ascending=[0])
Solution 3:[3]
For pandas 0.17 and above, use this :
test = df.sort_values('one', ascending=False)
Since 'one' is a series in the pandas data frame, hence pandas will not accept the arguments in the form of a list.
Solution 4:[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
Solution 5:[5]
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html
I don't think you should ever provide the False
value in square brackets (ever), also the column values when they are more than one, then only they are provided as a list! Not like ['one']
.
test = df.sort_values(by='one', ascending = False)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | |
Solution 3 | M-- |
Solution 4 | Vivekanand AIML |
Solution 5 |