如何使用Pandas重新排序多索引列?

时间:2018-08-27 19:47:37

标签: pandas multi-index

Table is shown here

代码:

main_collection.where(Client.field_path(u'English Name'), u'==', u'Jerry')

数据和代码如上所示。

我想知道有什么方法可以在使用Python进行start-develop-middle-operate时重新排序“ Progress”。

我尝试使用地图功能并为每个阶段设置了一个数字,但是无法从多索引中提取“进度”

谢谢!

1 个答案:

答案 0 :(得分:3)

reindex

您可以指定要重新索引的级别

cats = ['Start', 'Develop', 'Middle', 'Operate']
dff.reindex(cats, axis=1, level=1)

Country      France                              China                         
Progress      Start  Develop   Middle  Operate   Start Develop  Middle  Operate
NumTrans        772      832      494      793     750     722     818      684
TransValue  7363187  2578816  9764430  4863178  159777  840700  978816  9674337

set_levelsCategoricalIndex

您可以定义第二级的顺序,然后进行排序。

lvl1 = dff.columns.levels[1]
cats = ['Start', 'Develop', 'Middle', 'Operate']
cati = pd.CategoricalIndex(
  lvl1,
  categories=cats,
  ordered=True
)
dff.columns.set_levels(
  cati, level=1, inplace=True  
)

dff.sort_index(1)

Country      China                            France                           
Progress     Start Develop  Middle  Operate    Start  Develop   Middle  Operate
NumTrans       750     722     818      684      772      832      494      793
TransValue  159777  840700  978816  9674337  7363187  2578816  9764430  4863178