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

Pandas拼接多DataFrame保留索引名生成多级行索引

直接调用pd.concat(dfList, axis=0)无法得到预期结果的原因是:每个子DataFrame的分组标识(G1、G2)仅作为单个DataFrame的索引名存在,拼接时不会自动升级为上层索引保留分组层级。

你可以通过给每个子DataFrame新增一级MultiIndex的方式实现目标效果,示例代码如下:

import pandas as pd

# 预处理每个子DataFrame,添加分组级索引
processed_dfs = []
for df in dfList:
    # 取当前子DataFrame的索引名作为分组标识
    group_key = df.index.name
    # 构造双层索引:第一层为分组名,第二层为原数值索引
    df = df.set_index(
        pd.MultiIndex.from_tuples(
            [(group_key, idx) for idx in df.index],
            names=[None, None]
        )
    )
    processed_dfs.append(df)

# 拼接预处理后的DataFrame
Final_Combined_DF = pd.concat(processed_dfs, axis=0)

执行上述代码后打印Final_Combined_DF,得到的展示效果和你预期的完全一致:分组名G1、G2会单独显示在对应数据块的首行,下方为该分组对应的所有数值行,列结构保持原有的monthNum 1、2不变。如果追求更简洁的写法,也可以用列表推导式实现:

Final_Combined_DF = pd.concat(
    [df.set_index(pd.MultiIndex.from_tuples([(df.index.name, i) for i in df.index])) 
     for df in dfList]
)

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

相关产品推荐
方舟 Agent Plan

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

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