我有一个这样的数据框: 原始数据框
我打算对其进行调整,使 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) 的列进行排序也没有帮助。 有关如何将此自定义订单一直传送到数据透视表的任何线索吗?
假设您有固定的 cols 数据框。
{姓名、奖牌(金、银、铜)}
为什么不直接对数据透视后的列重新排序?
可以像这样简单:
# Change the order of columns
# Example desired order
desired_order = ['Name', 'GOLD', 'SILVER', 'BRONZE']
df_after_pivot = df_after_pivot[desired_order]