如何强制指定Pandas pivot_table的列结构与显示顺序?
关于pivot_table列顺序的问题解答
嘿,你的操作完全正确,而且这确实是pandas中pivot_table的预期行为哦!我来帮你拆解一下:
pivot_table的默认列排序逻辑:
当你通过values参数指定要聚合的列列表时,pivot_table默认会对这些列名进行字母序排序,哪怕你传入的列表是自定义顺序的。另外你提到的sort=False参数,它控制的是**行索引(这里是Owner列)**的排序,并不会影响聚合后列的顺序,这也是很多开发者容易混淆的点~你的解法是规范且有效的:
你先定义目标列顺序列表values_cols,再通过df2.loc[:, values_cols]重新指定列顺序的做法,是非常标准的处理方式。如果想更简洁一点,也可以用reindex一步完成:values_cols = ['Matches', 'W', 'D', 'L', 'Pts'] df2 = df.pivot_table(index='Owner', values=values_cols, aggfunc=sum).reindex(values_cols, axis=1)两种方法本质是一样的,都能精准控制列的显示顺序。
有没有直接指定列顺序的参数?
目前pandas的pivot_table并没有提供直接指定输出列顺序的参数,所以你现在的两步操作(或类似的reindex写法)就是最优的解决方案啦。
内容的提问来源于stack exchange,提问作者blacktj
相关产品推荐
相关产品推荐

