Boo*_*aka 5 multi-index pandas
代码:
dff = pd.DataFrame({'Country':['France']*4+['China']*4,
'Progress':['Develop','Middle','Operate','Start']*2,
'NumTrans':np.random.randint(100,900,8),
'TransValue':np.random.randint(10000,9999999,8)})
dff = dff.set_index(['Country','Progress']).T
Run Code Online (Sandbox Code Playgroud)
数据和代码如上所示。
我想知道有什么方法可以使用 Python 将“进度”重新排序为 start-develop-middle-operate。
我尝试使用地图功能并用数字设置每个阶段,但无法从多索引中提取“进度”
谢谢!
piR*_*red 15
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
Run Code Online (Sandbox Code Playgroud)
set_levels 和 CategoricalIndex您可以定义第二级的顺序,然后进行排序。
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3209 次 |
| 最近记录: |