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

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