Pandas 数据框问题:`reset_index` 不会删除分层索引

kri*_*nab 3 python pandas

我正在尝试将 Pandas Dataframe MultiIndex 展平,以便只有一个级别的索引。基于任意数量的 SE 帖子的通常解决方案是使用该df.reset_index命令,但这并不能解决问题。

我从 an 开始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
Run Code Online (Sandbox Code Playgroud)

展平我使用的索引

df.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

这只完成了这个:

         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
Run Code Online (Sandbox Code Playgroud)

我尝试多次执行该df.reset_index()选项,但这仍然没有使索引变平,我只想将其设置为单级索引。

更具体地说,我需要将“运行”和“年份”变量转到 0 级列名称集,并且我需要完全删除“结果”标题。

我一直在阅读 Pandas 文档,但似乎并没有真正描述对索引进行这种手术。有没有人知道如何做到这一点?

jez*_*ael 5

首先droplevel用于删除第一级MultiIndex然后reset_index

df.columns = df.columns.droplevel(0)
df = df.reset_index()
Run Code Online (Sandbox Code Playgroud)

  • 哦,这完全奏效了。我从未见过任何提及“droplevel”的内容,所以这很棒。非常感谢。我整天都在研究这个。 (2认同)