熊猫数据帧问题:"reset_index"不会删除分层索引



我正在尝试扁平化熊猫数据帧多索引,以便只有一个级别的索引。基于任意数量的 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()

最新更新