Comment trier une Pandas DataFrame en fonction de multiples critères?
J'ai le texte suivant DataFrame contenant des noms de chansons, leur pic de graphique les positions et le nombre de semaines qu'ils ont passé à la position n ° 1:
Song Peak Weeks
76 Paperback Writer 1 16
117 Lady Madonna 1 9
118 Hey Jude 1 27
22 Can't Buy Me Love 1 17
29 A Hard Day's Night 1 14
48 Ticket To Ride 1 14
56 Help! 1 17
109 All You Need Is Love 1 16
173 The Ballad Of John And Yoko 1 13
85 Eleanor Rigby 1 14
87 Yellow Submarine 1 14
20 I Want To Hold Your Hand 1 24
45 I Feel Fine 1 15
60 Day Tripper 1 12
61 We Can Work It Out 1 12
10 She Loves You 1 36
155 Get Back 1 6
8 From Me To You 1 7
115 Hello Goodbye 1 7
2 Please Please Me 2 20
92 Strawberry Fields Forever 2 12
93 Penny Lane 2 13
107 Magical Mystery Tour 2 16
176 Let It Be 2 14
0 Love Me Do 4 26
157 Something 4 9
166 Come Together 4 10
58 Yesterday 8 21
135 Back In The U.S.S.R. 19 3
164 Here Comes The Sun 58 19
96 Sgt. Pepper's Lonely Hearts Club Band 63 12
105 With A Little Help From My Friends 63 7
J'aimerais rang de ces chansons dans l'ordre de popularité, donc je voudrais de les trier selon les critères suivants: les chansons qui ont atteint la position la plus élevée venir en premier, mais si il y a une cravate, les chansons, qui est resté dans les charts pendant la plus longue viennent en premier.
Je n'arrive pas à comprendre comment faire cela dans les Pandas.
Vous devez vous connecter pour publier un commentaire.
Sur les pandas 0.9.1 et plus cela devrait fonctionner (c'est à 0.10.0b1):
(Edit: Comme des Pandas de 0,19, méthode
sort_index
est obsolète. Préférezsort_values
)df.reset_index(drop=True, inplace=True)
)df.index = range(len(df))
sort_index
est toujours disponible un pas marqué comme obsolète.Depuis pandas 0.17.0,
sort
est obsolète et remplacé parsort_values
:Si vous voulez le résultat trié pour une utilisation future,
inplace=True
est nécessaire.En utilisant .sort()
Va trier dans l'ordre croissant de la position du pic, alors que dans l'ordre décroissant de longueur dans les graphiques.
inplace=True
de la sorte...Dans le cas, si le dtypes de " Pic " et "Semaine" ne sont pas des " int " ou "float", puis utilisez la commande suivante.