从 0.24+ 开始,我们可以直接droplevel
在df
. 因此,要删除索引的最后一级:
>>> df
col
1 5 1 4 foo
3 2 8 bar
2 4 3 7 saz
# `axis` defaults to `index` or equivalently 0
>>> df.droplevel(-1, axis="index")
col
1 5 1 foo
3 2 bar
2 4 3 saz
水平下降的轴也可以通过axis
参数控制,默认为0,即超过索引。可以通过提供列表一次删除多个级别,如果任何索引有名称,也可以使用这些名称(如链接文档中所示)。
注意:参数 todroplevel
被尝试首先解释为标签;因此,如果任何级别碰巧有一个整数名称,它将被删除,即,不是位置:
>>> df
col
this -1 other 0
1 5 1 4 foo
3 2 8 bar
2 4 3 7 saz
# literally drops `-1` level
>>> df.droplevel(-1)
col
this other 0
1 1 4 foo
2 8 bar
2 3 7 saz
# literally level `0` is dropped
>>> df.droplevel(0)
col
this -1 other
1 5 1 foo
3 2 bar
2 4 3 saz
为了确保发生位置下降,我们可以names
选择属性并在那里选择位置:
>>> df
col
this -1 other 0
1 5 1 4 foo
3 2 8 bar
2 4 3 7 saz
# go get the name of the last level, drop whatever it is
>>> df.droplevel(df.index.names[-1])
col
this -1 other
1 5 1 foo
3 2 bar
2 4 3 saz
# similarly...
>>> df.droplevel(df.index.names[0])
col
-1 other 0
5 1 4 foo
3 2 8 bar
4 3 7 saz
最后,droplevel
返回一个新的数据框,因此df = df.droplevel(...)
需要查看df
.