EXCEL的數(shù)值排序功能還是挺強大的,升序、降序,尤其自定義排序,能夠?qū)Χ鄠€字段進行排序工作。
那么,在Python大法中,有沒有這樣強大的排序功能呢?答案是有的,而且本人覺得Python的排序功能,一點不比EXCEL的差。
同樣,我們依然用到的是強大的pandas這個三方庫。我們先將numpy和pandas導(dǎo)入進來:
接著構(gòu)造一個今天要用到的DataFrame,我們用字典的形式來構(gòu)造。
都是隨意構(gòu)造的,內(nèi)容別較真。我們先來個簡單點的熱熱身,按照身高的降序來排列一下。
我們用到的是df.sort_values()這個函數(shù)。第一個參數(shù)為by,傳入你要排序的列的標簽名即可,后面的ascending參數(shù)指示排序方法為升序還是降序,True為升序,F(xiàn)alse為降序。由于存在相同的身高,pandas會自動的比較兩個相同身高所對應(yīng)的index,按照index的升序來排列。
假如我有這樣一個需求:先按照身高降序排序,若存在相同的身高,則再按照武力來降序排序,可以做到嗎?
當(dāng)然可以,我們只需要在by參數(shù)里傳入列標簽組成的列表即可。
通過這個例子我們可以看到,by參數(shù)不但可以傳入字符串,還可以傳入字符串組成的列表,來實現(xiàn)對多個列進行排序。
接著,我的要求再高一點。身高我依然需要降序,但是武力我需要升序,可以嗎?
我們直接上結(jié)果:
跟by參數(shù)類似,我們只需要在ascending參數(shù)中也傳入布爾值組成的列表就可以了,意思就是告訴pandas,這兩列我各自需要的排序方式,就跟后面ascending參數(shù)里指定的一樣。因此,這兩個參數(shù)的列表內(nèi)的元素個數(shù)需要是一致的,否則就會報錯了,因為沒法一一對應(yīng)。
關(guān)于sort_values這個強大的排序函數(shù)就介紹到這了。除了這些參數(shù)之外,它還有inplace、kind和na_position等參數(shù)來應(yīng)對不同的排序需求。可以參考官網(wǎng)文檔進行學(xué)習(xí)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
