我正在尝试将 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 文档,但似乎并没有真正描述对索引进行这种手术。有没有人知道如何做到这一点?
首先droplevel用于删除第一级MultiIndex然后reset_index:
df.columns = df.columns.droplevel(0)
df = df.reset_index()
Run Code Online (Sandbox Code Playgroud)