对 pd.pivot_table 中的旋转列进行排序

问题描述 投票:0回答:1

我有一个这样的数据框: 原始数据框

我打算对其进行调整,使 3 种类型的奖牌成为列,它们各自的计数和平均分数成为值。像这样: 数据透视表

尽管如此,我希望数据透视表的列按以下顺序排列:“黄金”、“白银”、“青铜”,而不是当前显示的字母顺序。

我试过这个:

df['medals']=pd.Categorical(values = df['medals'], ordered = True, categories =['Gold','Silver','Bronze'])

df = df.sort_values(by =[ 'name','medals'])

这导致我的原始数据框的行按预期顺序排列: 自定义排序后的原始数据框

但是,当转换为列名称时,我的奖章名称又会恢复按字母顺序排列。 对pivot_table (.sort_values(by = 'medals', axis = 1) 的列进行排序也没有帮助。 有关如何将此自定义订单一直传送到数据透视表的任何线索吗?

python sorting pivot-table categorical-data
1个回答
0
投票

假设您有固定的 cols 数据框。

{姓名、奖牌(金、银、铜)}

为什么不直接对数据透视后的列重新排序?

可以像这样简单:

# Change the order of columns
# Example desired order
desired_order = ['Name', 'GOLD', 'SILVER', 'BRONZE'] 

df_after_pivot = df_after_pivot[desired_order]
© www.soinside.com 2019 - 2024. All rights reserved.