trier une Série de Pandas?
Désolé, je pense que je suis absent quelque chose de très basique ici:
>>> Series([3,4,0,3]).sort()
sorties Aucun, tandis que
>>> Series([3,4,0,3]).order()
2 0
0 3
3 3
1 4
dtype: int64
qu'est-ce que je manque avec sort()?
Merci
EDIT:
Merci pour les réponses, je réalise maintenant que c'est le tri en place. Mais je ne comprends pas pourquoi
>>> s = Series([3,4,0,3]).sort()
>>> s
ne renvoie pas les séries triées. Si je comprends manuel il devrait retourner la série triée en lieu.
3 réponses
.sort()
trie place.
cela signifie Que, après que vous appelez .sort()
, le tableau existant a été trié. Elle ne retourne rien.
Pour prendre un exemple "de base" de Python:
In [175]: L = [2, 3, 1, 5]
In [176]: L.sort()
In [177]: print(L)
[1, 2, 3, 5]
C'est la même chose pour les Pandas, comme le montre Pandas.trier:
trier les valeurs et les étiquettes d'index par valeur, en place. Pour la compatibilité avec l'API ndarray. Pas de retour valeur
Voir aussi: Quelle est la différence entre les séries?sort() et de la Série.commande()?
In [1]: import pandas as pd
In [2]: s = pd.Series([3,4,0,3]).sort()
In [3]: s
en Effet In [3]
sortie de rien, comme vous pouvez vérifier:
In [4]: type(s)
Out[4]: NoneType
La raison:
pd.Series([3,4,0,3])
en effet retourner un pandas Series
type d'objet, MAIS Series.sort()
méthode return à cause de in place tri. Si l'expression s = pd.Series([3,4,0,3]).sort()
,s
dans LHS obtiendrez rien de RHS, donc In [3]: s
ne produit rien.
notez que:
Après la version 0.17.0, le tri par valeur méthode pandas.Series.sort()
et pandas.Series.order()
sont dépréciés, remplacés par unpandas.Series.sort_values()
API. Voir cette réponse pour plus de détails.
comme avec la plupart des autres itérables python, série.sort() ne retourne en fait rien, mais trie la Série. Voir par exemple tri d'une liste python:
In [2]: foo = [5, 3, 9]
In [3]: foo.sort()
In [4]: foo
Out[4]: [3, 5, 9]