Supposons que j'ai une trame de données avec des colonnes a
, b
et c
, je veux trier la colonne par dataframe b
dans l' ordre croissant, et par colonne c
dans l' ordre décroissant, comment dois - je faire cela?
python
pandas
python-2.7
sorting
data-analysis
Rakesh Adhikesavan
la source
la source
Réponses:
Depuis la version 0.17.0, la
sort
méthode était déconseillée au profit desort_values
.sort
a été complètement supprimé dans la version 0.20.0. Les arguments (et les résultats) restent les mêmes:Vous pouvez utiliser l'argument croissant de
sort
:Par exemple:
Comme l'a commenté @renadeen
c'est-à-dire, si vous souhaitez réutiliser df1 en tant que DataFrame trié:
ou
la source
sort
méthode à une variable ou l'ajouterinplace=True
à l'appel de méthode.À partir de pandas 0.17.0, il
DataFrame.sort()
est obsolète et devrait être supprimé dans une future version de pandas. La façon de trier une trame de données par ses valeurs est maintenantDataFrame.sort_values
En tant que tel, la réponse à votre question serait maintenant
la source
Pour les grandes trames de données numériques, vous pouvez constater une amélioration significative des performances via
numpy.lexsort
, qui effectue un tri indirect à l'aide d'une séquence de clés:Une particularité est que l'ordre de tri défini avec
numpy.lexsort
est inversé:(-'b', 'a')
trie par série ena
premier. Nous nions les sériesb
pour indiquer que nous voulons que ces séries soient décroissantes.Sachez que
np.lexsort
ne trie qu'avec des valeurs numériques, tout enpd.DataFrame.sort_values
fonctionnant avec des chaînes ou des valeurs numériques. L' utilisationnp.lexsort
avec des cordes donnera:TypeError: bad operand type for unary -: 'str'
.la source