python, trie DataFrame descendant avec pandas

j'essaie de trier une base de données en descendant. J'ai mis 'False' dans l'argument ascendant, mais mon ordre est encore Ascendant.

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
20
demandé sur user3636476 2014-07-28 09:25:56

4 réponses

Edit: C'est hors de date, voir @Merlin de réponse.

[False], étant un non vide liste qui n'est pas le même que False. Vous devriez écrire:

test = df.sort('one', ascending=False)
26
répondu U2EF1 2018-06-27 23:49:30

Nouvelle syntaxe ():

 test = df.sort_values(['one'], ascending=[False])
 test = df.sort_values(['one'], ascending=[0])
29
répondu Merlin 2016-10-14 16:46:21

Pour les pandas 0,17 et au-dessus, utilisez ceci :

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

puisque ' one ' est une série dans le cadre de données pandas, pandas n'acceptera donc pas les arguments sous la forme d'une liste.

12
répondu Arko 2017-04-29 17:09:58

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html

je ne pense pas que vous devriez jamais fournir de l' False valeur entre crochets (jamais), aussi les valeurs de la colonne quand ils sont plus d'un, alors qu'ils sont présentés dans une liste! Pas comme ['one'].

test = df.sort_values(by='one', ascending = False)
-1
répondu aspiring1 2018-05-27 11:16:44