自定义排序怎么用 Pandas 中的 sort_values 实现?

在处理数据的时候,排序是很常见的一个操作,通常我们用 Pandas 进行排序的时候会用到 sort_values,但是很多时候 sort_values 默认的仅仅是升序降序,如果有更加个性化的排序需求,怎么用 sort_values 实现呢?接下我们一起来看看具体怎么实现个性化的排序需求。

假设你有如下的数据需要按分公司、产品排序。

有如下需求:

1、分公司按北京、上海、深圳、广州、武汉、南京、郑州的顺序排列。

2、每个分公司的产品按空调、电脑、手机排序。

通常在 Pandas 中排序是用 sort_values,但是上面两个需求貌似用 sort_values 没法直接解决问题。通常要解决此类问题需要建辅助列,通常辅助列都是这么建的。

建辅助列的过程

# 用字典保存自定义排序顺序
company_dict = {'北京': 0, '上海': 1, '深圳': 2, '广州': 3, '武汉': 4, '南京': 5, '郑州': 6}
product_dict = {'空调': 0, '电脑': 1, '手机': 2}

# 新建辅助列
df['company_rank'] = df['分公司'].map(company_dict)
df['product_rank'] = df['产品'].map(product_dict)

# 来看看新建辅助列后的输出效果
df.head()

排序过程

# 对分公司和产品进行排序
df.sort_values(by=['company_rank', 'product_rank'], inplace=True)

# 删掉辅助列
df.drop(columns=['company_rank', 'product_rank'], inplace=True)

# 看看排序后的效果
df.head(10)

下次碰到类似的问题,快来用这种方法吧!

为了及时收到文章更新,欢迎关注个人公众号:Python实战数据分析

发表评论

电子邮件地址不会被公开。