编程语言
首页 > 编程语言> > Python学习笔记:natsort实现自然排序

Python学习笔记:natsort实现自然排序

作者:互联网

一、介绍

自然排序顺序(Natural sort order)不同于默认排序,针对字符串逐个比较对应位置字符的 ASCII 码方式,更关注字符串实际相对大小意义的排序。

例如:需要根据年增长率(50%)对数据列进行排序,此时无法直接排序。

可以借助第三方库(natsort)进行排序。

二、natsort库

1.安装

pip install natsort
'''
Collecting natsort
  Downloading natsort-8.1.0-py3-none-
Installing collected packages: natsor
Successfully installed natsort-8.1.0
'''

2.排序

import pandas as pd
import numpy as np
import natsort

# 构建测试集
df = pd.DataFrame({
        "Name": ['A', 'B', 'C'],
        "Rate": ['5%', '15%', '10%']
        })

# 默认排序
df.sort_values(by='Rate')
'''
  Name Rate
2    C  10%
1    B  15%
0    A   5%
'''
# 并非我们所要~

# 自然排序
natsort.index_natsorted(df['Rate']) # 自然顺序排序
np.argsort(natsort.index_natsorted(df['Rate']))

# 最终结果
df.sort_values('Rate', key=lambda x: np.argsort(natsort.index_natsorted(x)))
'''
  Name Rate
0    A   5%
2    C  10%
1    B  15%
'''

参考链接:pandas中鲜为人知的隐藏排序技巧

参考链接:natsort

标签:index,Python,natsort,df,Rate,15%,排序
来源: https://www.cnblogs.com/hider/p/16184102.html