我正在尝试扁平化熊猫数据帧多索引,以便只有一个级别的索引。基于任意数量的 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()
选项,但这仍然没有使索引扁平化,我想将其仅设置为单级索引。
更具体地说,我需要"run"和"year"变量转到 0 级列名集,并且我需要完全删除"结果"标题。
我一直在阅读 Pandas 文档,但似乎并没有真正描述对索引进行这种手术。有没有人知道如何做到这一点?
使用第一个droplevel
删除第一级MultiIndex
,然后reset_index
:
df.columns = df.columns.droplevel(0)
df = df.reset_index()