如何重新排序 Pandas 中的多索引列?

Posted

技术标签:

【中文标题】如何重新排序 Pandas 中的多索引列?【英文标题】:How to reorder multi-index columns in Pandas? 【发布时间】:2019-03-26 20:36:32 【问题描述】:
df=pd.DataFrame('Country':["AU","GB","KR","US","GB","US","KR","AU","US"],'Region Manager':['TL','JS','HN','AL','JS','AL','HN','TL','AL'],'Curr_Sales': [453,562,236,636,893,542,125,561,371],'Curr_Revenue':[4530,7668,5975,3568,2349,6776,3046,1111,4852],'Prior_Sales': [235,789,132,220,569,521,131,777,898],'Prior_Revenue':[1530,2668,3975,5668,6349,7776,8046,2111,9852])

pd.pivot_table(df, values=['Curr_Sales', 'Curr_Revenue','Prior_Sales','Prior_Revenue'],index=['Country', 'Region Manager'],aggfunc=np.sum,margins=True)

大家好,

我有以下数据框,我想将多索引列重新排序为

['Prior_Sales','Prior_Revenue','Curr_Sales', 'Curr_Revenue']

如何在 pandas 中做到这一点?

代码如上图

提前感谢所有帮助!

【问题讨论】:

【参考方案1】:

切片生成的数据帧

pd.pivot_table(
    df,
    values=['Curr_Sales', 'Curr_Revenue', 'Prior_Sales', 'Prior_Revenue'],
    index=['Country', 'Region Manager'],
    aggfunc='sum',
    margins=True
)[['Prior_Sales', 'Prior_Revenue', 'Curr_Sales', 'Curr_Revenue']]


                        Prior_Sales  Prior_Revenue  Curr_Sales  Curr_Revenue
Country Region Manager                                                      
AU      TL                     1012           3641        1014          5641
GB      JS                     1358           9017        1455         10017
KR      HN                      263          12021         361          9021
US      AL                     1639          23296        1549         15196
All                            4272          47975        4379         39875

【讨论】:

谢谢!这就是我想要的答案!!【参考方案2】:
cols = ['Prior_Sales','Prior_Revenue','Curr_Sales', 'Curr_Revenue']

df = df[cols]

【讨论】:

这很简单。谢谢!

以上是关于如何重新排序 Pandas 中的多索引列?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas 连接多索引列

如何在多索引列上使用 pandas rename()?

pandas 透视多索引列

具有多索引列的 Pandas groupby

使用多索引列连接两个 pandas 数据框

Plotly.Express + Pandas 多索引列