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

拼接多个带多级行索引的DataFrame如何保留索引层级?

多级行索引DataFrame批量合并通用方案

实现思路:将所有待合并的DataFrame存入列表,遍历为每个DataFrame的第一级行索引统一赋值为其在列表中的序号,拼接后即可自动实现第一级索引按顺序递增,同时保留两级索引结构。

完整可运行代码

import pandas as pd
import numpy as np

# 示例生成测试DataFrame
arrays = [
    np.array([0,0,0]),
    np.array([0,1,2]),
]
arrays_2 = [
    np.array([0,0]),
    np.array([0,1]),
]
df1 = pd.DataFrame(np.random.randn(3, 1), index=arrays)
df2 = pd.DataFrame(np.random.randn(2, 1), index=arrays_2)

# 待合并DataFrame列表,可任意添加N个df,无需提前知道数量
dfs = [df1, df2]

# 批量处理每个df的第一级索引
for seq, df in enumerate(dfs):
    # 保留第二级索引不变,第一级索引替换为当前df的顺序编号
    new_index = pd.MultiIndex.from_arrays(
        [
            [seq] * len(df),
            df.index.get_level_values(1)
        ]
    )
    df.index = new_index

# 拼接得到结果,自动保留两级索引
res = pd.concat(dfs)
print(res)

方案说明

  • 第二级索引会完全保留原始数据的取值,不会被重置
  • 拼接后第一级索引取值和dfs列表中df的顺序一一对应,从0开始自动递增
  • 避免了append(df, ignore_index=True)会折叠多级索引为单级的问题

内容的提问来源于stack exchange,提问作者Mohamed Ayman Aly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:18:02