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

Python中为拼接自多组np.array的DataFrame设置分组表头

实现方案

首先需要明确三个原始NumPy数组各自的列数(记为col1、col2、col3),确保三者之和等于75000。根据你需要的表头样式,分两种场景实现:

场景1:普通分组列名(前缀区分)

如果只是需要给不同来源的列加上分组前缀,直接拼接时指定列名即可:

import pandas as pd
import numpy as np

# 替换为你的实际数组和列数
col1, col2, col3 = 25000, 25000, 25000
arr1 = np.random.rand(12, col1)  # 第一个原始数组
arr2 = np.random.rand(12, col2)  # 第二个原始数组
arr3 = np.random.rand(12, col3)  # 第三个原始数组

# 生成各分组的列名列表
group1_cols = [f'Group1_col{i}' for i in range(col1)]
group2_cols = [f'Group2_col{i}' for i in range(col2)]
group3_cols = [f'Group3_col{i}' for i in range(col3)]

# 拼接数组并设置列名
df = pd.DataFrame(
    np.hstack([arr1, arr2, arr3]),
    columns=group1_cols + group2_cols + group3_cols
)

如果已经有拼接好的无表头DataFrame,直接修改列名:

# 假设df_raw是已有的(12,75000)无表头DataFrame
df_raw.columns = group1_cols + group2_cols + group3_cols

场景2:多级分组表头(大标题套小标题,对应附图样式)

如果需要类似分组折叠的多级表头,使用pd.MultiIndex创建层级列名:

# 生成多级列名元组列表
multi_col_tuples = (
    [('Group1', f'Col{i}') for i in range(col1)] +
    [('Group2', f'Col{i}') for i in range(col2)] +
    [('Group3', f'Col{i}') for i in range(col3)]
)
multi_cols = pd.MultiIndex.from_tuples(multi_col_tuples)

# 生成带多级表头的DataFrame
df_multi = pd.DataFrame(
    np.hstack([arr1, arr2, arr3]),
    columns=multi_cols
)

对已有DataFrame修改为多级表头:

df_raw.columns = multi_cols

关键注意事项

  • 必须保证col1 + col2 + col3 = 75000,否则会出现列数不匹配的报错
  • 可以根据需求自定义分组名称(比如把Group1换成业务相关的名称)和列名后缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:55:19