web-dev-qa-db-fra.com

python, triez le cadre de données descendant avec les pandas

J'essaie de trier un cadre de données par ordre décroissant ... J'ai mis 'Faux' dans l'argument croissant, mais mon ordre est toujours croissant.

Mon code est:

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

mais la sortie est

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

Edit: Ceci est obsolète, voir la réponse de @ Merlin.

[False], en tant que non vide list, est différent de False. Vous devriez écrire:

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

Nouvelle syntaxe (soit):

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

Pour les pandas de 0,17 et plus, utilisez ceci:

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

Puisque "one" est une série dans le bloc de données de pandas, les pandas n'accepteront donc pas les arguments sous forme de liste.

13
Arko
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
0
Vivekanand AIML