如何在groupby与value_counts后重排Series的索引顺序?
解决方案
要让createGroup的顺序固定为True→False,可以用以下两种方法:
方法1:将createGroup转为有序类别类型
提前把createGroup列设置为有序类别,指定好顺序,后续的groupby和value_counts都会遵循这个顺序:
import pandas as pd # 先将createGroup转为有序类别,指定顺序为[True, False] df['createGroup'] = pd.Categorical(df['createGroup'], categories=[True, False], ordered=True) # 再执行分组和统计 result = df.groupby('verification')['createGroup'].value_counts(normalize=True)
方法2:对结果用reindex强制指定顺序
如果不想修改原数据类型,可以在统计完成后,用reindex重新排列索引顺序:
# 先执行分组统计 result = df.groupby('verification')['createGroup'].value_counts(normalize=True) # 按指定顺序重新索引 result = result.reindex([True, False], level='createGroup')
为什么你的原代码没效果?
你先对createGroup做sort_values再分组,这个操作不影响后续groupby后的value_counts排序——因为value_counts默认是按计数从高到低排列的,和原始数据的顺序无关。
内容的提问来源于stack exchange,提问作者Rodrigo Gutierrez
相关产品推荐
相关产品推荐

