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:
New syntax (either):
test = df.sort_values(['one'], ascending=[False])
test = df.sort_values(['one'], ascending=[0])
Solution 2:
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 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.