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

Python 3.6中如何将多组DataFrame数据上下堆叠并插入表头行?

解决DataFrame按列分组拼接并自定义展示格式的问题

嘿,我来帮你搞定这个DataFrame的展示需求!先理清楚你的场景:你有一个名为Tmp的DataFrame,数据是这样的:

import pandas as pd

data = {
    'A1': [17.387, 17.680, 17.787],
    'A2': [17.470, 17.896, 17.228],
    'B1': [19.93, 21.85, 24.46],
    'B2': [13.29, 14.57, 16.30],
    'C1': [19.93, 21.86, 24.45],
    'C2': [19.93, 21.86, 24.45]
}
Tmp = pd.DataFrame(data)

你想要把每一组(A1&A2、B1&B2、C1&C2)单独展示,每组先显示自己的表头,再跟上对应的数据行,而且不要重复的索引。之前用pd.concat和append没成功,是因为没处理「插入表头行」和「按前缀分组」这两个关键点,试试下面的方案:

解决方案代码

# 获取所有列的前缀(A、B、C),确保按顺序排列
prefixes = sorted({col[0] for col in Tmp.columns})

# 准备一个列表来存储每个分组的结果块
result_blocks = []

for prefix in prefixes:
    # 提取当前前缀对应的两列
    group_cols = [f"{prefix}1", f"{prefix}2"]
    group_data = Tmp[group_cols]
    
    # 创建表头行:把列名转成一行数据,结构和数据行一致
    header_row = pd.DataFrame([group_cols], columns=group_cols)
    
    # 把表头行和数据行拼接,忽略原有索引
    group_block = pd.concat([header_row, group_data], ignore_index=True)
    result_blocks.append(group_block)

# 把所有分组块拼接成最终结果,重置索引得到连续序号
final_output = pd.concat(result_blocks, ignore_index=True)

print(final_output)

代码说明

  1. 提取前缀:通过列名的第一个字符获取所有分组前缀(A、B、C),用sorted保证顺序和你预期一致;
  2. 构建分组块:对每个前缀,先取出对应的两列数据,然后把列名转换成一行作为表头,再和数据行拼接;
  3. 合并所有块:把每个分组的表头+数据块拼接起来,重置索引后就得到你想要的连续序号格式。

运行这段代码后,输出结果就和你期望的完全一致啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:43:06