pandas中鮮為人知的隱藏排序技巧

添加微信號"CNFeffery"加入技術(shù)交流群
?本文完整示例代碼及文件已上傳至我的
?Github倉庫https://github.com/CNFeffery/PythonPracticalSkills
這是我的系列文章「Python實(shí)用秘技」的第7期,本系列立足于筆者日常工作中使用Python積累的心得體會,每一期為大家?guī)硪粋€幾分鐘內(nèi)就可學(xué)會的簡單小技巧。
作為系列第7期,我們即將學(xué)習(xí)的是:在pandas中實(shí)現(xiàn)自然排序順序。

自然排序順序(Natural sort order),不同于默認(rèn)排序針對字符串逐個比較對應(yīng)位置字符的ASCII碼的方式,它更關(guān)注字符串實(shí)際相對大小意義的排序,舉個常見的例子,假如我們有下面這樣的一張表,其中value字段是百分比格式的字符串:

這時如果直接照?;?code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">value字段進(jìn)行排序,得到的結(jié)果明顯不符合數(shù)據(jù)實(shí)際意義:

而我們今天要介紹的技巧,就需要用到第三方庫natsort,使用pip install natsort完成安裝后,利用其index_natsorted()對目標(biāo)字段進(jìn)行自然順序排序,再配合np.argsort()以及pandas的sort_values()中的key參數(shù),就可以通過自定義lambda函數(shù),實(shí)現(xiàn)利用目標(biāo)字段自然排序順序進(jìn)行正確排序的目的:

可以看到,此時得到的排序結(jié)果完美符合我們的需求~
更多natsort知識歡迎前往https://github.com/SethMMorton/natsort學(xué)習(xí)更多。
本期分享結(jié)束,咱們下回見~??

加入知識星球【我們談?wù)摂?shù)據(jù)科學(xué)】
500+小伙伴一起學(xué)習(xí)!
·?推薦閱讀?·
Python中關(guān)于進(jìn)度條的6個實(shí)用技巧
