我正在尝试展平Pandas Dataframe MultiIndex,以便只有一个级别的索引。基于任意数量的SE帖子的常见解决方案是使用df.reset_index
命令,但这只是不能解决问题。
我从Xarray DataArray
开始,将其转换为数据框。原始数据框看起来像这样。
results
simdata a_ss_yr attr attr1 attr2 attr3
run year
0 0 0 0 0 0 0
1 1 6 2 0 4
2 2 4 2 2 0
3 3 1 0 0 1
4 4 2 0 2 0
要弄平我使用的索引
df.reset_index(drop=True)
这只能做到这一点:
run year results
simdata a_ss_yr attr attr1 attr2
0 0 0 0 0 0 0
1 0 1 1 6 2 0
2 0 2 2 4 2 2
3 0 3 3 1 0 0
4 0 4 4 2 0 2
我尝试不止一次地执行df.reset_index()
选项,但这仍然不能使索引变平,我只想将其作为单个级别的索引。
更具体地说,我需要“运行”和“年”变量进入第0级列名称集,并且需要完全删除“结果”标题。
我一直在阅读Pandas文档,但似乎并没有真正描述对索引进行这种手术。有谁知道如何做到这一点?
答案 0 :(得分:4)
使用第一个droplevel
删除第一个级别的MultiIndex
,然后删除reset_index
:
df.columns = df.columns.droplevel(0)
df = df.reset_index()