comment faire pour trier les pandas dataframe d'une colonne
J'ai un bloc de données comme ceci:
print(df)
0 1 2
0 354.7 April 4.0
1 55.4 August 8.0
2 176.5 December 12.0
3 95.5 February 2.0
4 85.6 January 1.0
5 152 July 7.0
6 238.7 June 6.0
7 104.8 March 3.0
8 283.5 May 5.0
9 278.8 November 11.0
10 249.6 October 10.0
11 212.7 September 9.0
Comme vous pouvez le voir, les mois ne sont pas dans le calendrier de la commande. J'ai donc créé un deuxième colonne pour obtenir le numéro du mois correspondant à chaque mois (1-12). À partir de là, comment puis-je trier ces données, cadre de selon le des mois du calendrier de " l'ordre?
Vous devez vous connecter pour publier un commentaire.
Utilisation
sort_values
pour trier les df par une colonne spécifique de valeurs:Si vous souhaitez trier par deux colonnes, passer d'une liste des étiquettes de colonne à
sort_values
avec les étiquettes des colonnes ordonnées selon la priorité de tri. Si vous utilisezdf.sort_values(['2', '0'])
, le résultat serait triés par colonne2
puis colonne0
. Accordée, ce qui n'a pas vraiment de sens pour cet exemple parce que chaque valeur dedf['2']
est unique.dtype
n'est pas question ici d'essayerdf.sort_values(df.columns[2])
df.columns.tolist()
cela va vous dire que les noms de colonne sontastype
comme ceci:df['2'] = df['2'].astype(int)
df.sort_values('2', ascending=False )
df.sort_values(['col_1','col_2'])
df = df.sort_values(['col_1','col_2'])
df.sort_values('2')
échoue avec KeyError. C'est en faitdf.sort_values(2)
si vous souhaitez spécifier la colonne par le nombre.2
c'est parce que vos colonnes sont nommées en utilisant des entiers et non pas la chaîne'2'
, je ne peux pas reproduire le tri des df en passant de la position de la colonne d'intérêt, si aucun nom de colonne correspond à ce qui soulève unKeyError
J'ai essayé les solutions ci-dessus et je ne suis pas d'obtenir des résultats, j'ai donc trouvé une autre solution qui fonctionne pour moi. Le croissant=False est à l'ordre du dataframe dans décroissant ordre, par défaut, il est Vrai. Je suis à l'aide de python 3.6.6 et les pandas 0.23.4 versions.
Vous pouvez voir plus de détails dans les pandas documentation ici.
Juste ajouter un peu plus d'opérations sur les données. Supposons que nous avons un dataframe
df
, nous pouvons faire plusieurs opérations pour obtenir les résultats souhaitésdonnera
sorted
de sortie des étiquettes commedataframe
Juste comme une autre solution:
vous pouvez classer votre chaîne de données(nom du mois) et les trier par qui comme ceci:
Il obtiendra les données triées par nom de mois que vous dites lors de la création de la
Categorical
objet.