You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理pandas DataFrame多重索引,重命名层级并删除指定层级?

操作方案

行索引处理(重命名+删除第三层+解决重复问题)

删除第三层后第二层索引重复属于正常现象:原数据中同一个District_ID+Month组合下原本就有多条记录,第三层是原本区分这些记录的默认行号,删掉后自然会出现重复的前两层索引,如果你需要每个District_ID+Month组合仅对应一行,后续按需做聚合即可。

方法1:先命名层级再删除多余层级

# 先给三层索引分别设置名称,第三层临时命名为待删除的占位名
DF.index.names = ['District_ID', 'Month', 'drop_level']
# 删除第三层索引
DF = DF.reset_index(level='drop_level', drop=True)

方法2:删除层级后再重命名

# 先删除第三层索引
DF.index = DF.index.droplevel(2)
# 重命名剩下的两层行索引
DF.index.names = ['District_ID', 'Month']

重复索引处理(按需选择)

如果需要合并同一District_ID+Month下的重复行,可根据业务需求选择聚合逻辑,示例为取数值列均值:

DF = DF.groupby(level=['District_ID', 'Month']).mean(numeric_only=True)

列索引重命名

分两种常用场景:

  • 全量替换列名:列名列表长度需要和现有列数完全一致
# 示例:替换所有列名为自定义列表
DF.columns = ['自定义列名1', '自定义列名2', '自定义列名3']
  • 替换指定列名:无需修改的列不需要传入
# 示例:仅将原列名old_col1、old_col2替换为新名称
DF = DF.rename(columns={
    'old_col1': 'new_col1',
    'old_col2': 'new_col2'
})

内容的提问来源于stack exchange,提问作者Lambda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:42:02