登录
首页 >  文章 >  python教程

pandas多级索引转列技巧

时间:2026-01-28 10:51:39 197浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《pandas 多级索引转普通列方法》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

reset_index()是最直接的多级索引转普通列方法:默认拆解所有层级并生成整数索引;可用level参数指定部分层级;支持rename或列表推导式重命名;建议先设索引名避免level_0等默认名。

pandas 如何把多级索引快速扁平化为普通列

reset_index() 就能快速把多级索引转成普通列,这是最直接、最常用的方法。

直接用 reset_index() 拆解所有层级

默认情况下,reset_index() 会把所有索引层级都变成普通列,并生成新的整数索引:

df_flat = df.reset_index()

如果原 DataFrame 有两级索引(比如 year 和 category),执行后这两列会自动出现在最左边,名称保持不变。

只扁平化部分索引层级

如果只想展开其中几层,可以用 level 参数指定层级名或位置:

  • 按名称:df.reset_index(level=['year', 'region'])
  • 按位置:df.reset_index(level=[0, 2])

未指定的层级仍保留在索引中,适合逐步处理复杂索引结构。

重命名扁平化后的列名

扁平化后列名可能和原有索引名重复,或层级名含元组(如多级列索引嵌套时),可配合 rename()columns 直接调整:

  • 简单重命名:df.reset_index().rename(columns={'level_0': 'year', 'level_1': 'type'})
  • 批量清理列名(去掉元组):df_flat.columns = ['_'.join(col).strip() if isinstance(col, tuple) else col for col in df_flat.columns]

避免索引名冲突的小技巧

如果某层索引没有名字(name is None),reset_index() 会默认生成 level_0level_1 这样的列名。提前设好索引名更清晰:

df.index.names = ['year', 'category']  # 先命名再 reset_index

这样扁平化后列名就是可读的 yearcategory,无需额外重命名。

到这里,我们也就讲完了《pandas多级索引转列技巧》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>