如何在Python Pandas中手动指定value_counts结果的行排序顺序?
手动指定Pandas DataFrame的自定义排序顺序
问题背景
执行counts = df["AssignedGroup"].value_counts(sort=False)后得到如下DataFrame:
"Column 1" "Column 2" XYZ55 Data Tech 128 XYZ59 Data Tech 117 XYZ54 Data Tech 53 XYZ64 Data Tech 7 XYZ57 Data Tech 12 XYZ56 Data Tech 10 XYZ53 Data Tech 9
需要将其调整为以下自定义顺序的结果:
XYZ53 Data Tech 9 XYZ56 Data Tech 10 XYZ57 Data Tech 12 XYZ54 Data Tech 53 XYZ64 Data Tech 7 XYZ55 Data Tech 128 XYZ59 Data Tech 117
解决方案
当然可以手动指定这种非默认的排序顺序,通过Pandas的Categorical类型就能实现,具体步骤如下:
定义自定义排序列表
先把你想要的顺序写成一个列表:custom_order = [ "XYZ53 Data Tech", "XYZ56 Data Tech", "XYZ57 Data Tech", "XYZ54 Data Tech", "XYZ64 Data Tech", "XYZ55 Data Tech", "XYZ59 Data Tech" ]将索引转换为分类类型
把counts的索引转换成带有自定义顺序的分类类型:import pandas as pd counts.index = pd.Categorical(counts.index, categories=custom_order, ordered=True)按索引排序
最后调用sort_index()方法,就能得到你想要的顺序:counts_sorted = counts.sort_index()
执行完以上步骤后,counts_sorted就是你期望的自定义排序后的DataFrame。
内容的提问来源于stack exchange,提问作者Kyzoki
相关产品推荐
相关产品推荐

