我有以下DataFrame包含歌曲名称,他们的峰值图表位置以及他们在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
Run Code Online (Sandbox Code Playgroud)
我想按照受欢迎的顺序对这些歌曲进行排名,所以我想根据以下标准对它们进行排序:达到最高位置的歌曲排在第一位,但如果有平局,那么歌曲会保留在排行榜中最长的是第一个.
我似乎无法弄清楚如何在熊猫中做到这一点.
Wes*_*ney 30
在pandas 0.9.1及更高版本上,这应该可行(这是0.10.0b1):
(编辑:截至Pandas 0.19,方法sort_index已弃用.首选sort_values)
In [23]: songs.sort_index(by=['Peak', 'Weeks'], ascending=[True, False])
Out[23]:
Song Peak Weeks
10 She Loves You 1 36
118 Hey Jude 1 27
20 I Want To Hold Your Hand 1 24
22 Can't Buy Me Love 1 17
56 Help! 1 17
76 Paperback Writer 1 16
109 All You Need Is Love 1 16
45 I Feel Fine 1 15
29 A Hard Day's Night 1 14
48 Ticket To Ride 1 14
85 Eleanor Rigby 1 14
87 Yellow Submarine 1 14
173 The Ballad Of John And Yoko 1 13
60 Day Tripper 1 12
61 We Can Work It Out 1 12
117 Lady Madonna 1 9
8 From Me To You 1 7
115 Hello Goodbye 1 7
155 Get Back 1 6
2 Please Please Me 2 20
107 Magical Mystery Tour 2 16
176 Let It Be 2 14
93 Penny Lane 2 13
92 Strawberry Fields Forever 2 12
0 Love Me Do 4 26
166 Come Together 4 10
157 Something 4 9
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
Run Code Online (Sandbox Code Playgroud)
Rob*_*lak 22
由于pandas 0.17.0,sort不推荐使用并替换为sort_values:
df.sort_values(['Peak', 'Weeks'], ascending=[True, False], inplace=True)
Run Code Online (Sandbox Code Playgroud)
小智 18
df.sort(['Peak', 'Weeks'], ascending=[True, False], inplace=True)
Run Code Online (Sandbox Code Playgroud)
如果您想要将分类结果供将来使用,inplace=True则需要.
使用.sort()
df.sort(['Peak', 'Weeks'], ascending=[True, False])
Run Code Online (Sandbox Code Playgroud)
将按照峰值位置的升序排序,然后按照图表中长度的降序排列.