为什么重置pandas DataFrame的索引时会出现新列?
reset_index() 生成 level_0 列的原因 level_0 是pandas处理索引转换时自动生成的默认列名,触发场景分为两种:
- 连续两次调用无
drop=True参数的reset_index():第一次调用会把旧索引转为index列,同时生成新的默认整数索引;第二次调用时,新的整数索引会被转为列,为了避免和已有的index列重名,pandas自动将其命名为level_0。 - 待操作的DataFrame本身为多级索引(MultiIndex)结构:调用
reset_index()时会将每一级索引依次转为普通列,第一级索引的默认列名即为level_0,后续层级依次命名为level_1、level_2等。
解决方法
- 不需要保留旧索引时,调用
reset_index()添加drop=True参数即可避免生成额外列:df = df.reset_index(drop=True) - 已经生成
level_0列时直接删除即可:df = df.drop('level_0', axis=1)
内容的提问来源于stack exchange,提问作者Manas Kalra
相关产品推荐
相关产品推荐

