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

如何用pandas read_excel将多行合并为列名,无需手动指定names

解决方案

可以通过read_excel的header参数配合后续列名处理实现,无需手动用names设置列名,分两种场景处理:

场景1:直接得到列名B、C、D、E、F、G(省略A列相关表头)

如果第二行表头已经包含B、C、D、E、F、G,仅需指定读取第二行为表头,再剔除A列即可:

import pandas as pd

# 指定第二行为表头(索引从0开始,header=1对应第二行)
df = pd.read_excel("your_file.xlsx", header=1)
# 删除A列
df = df.drop(columns=["A"])

如果原文件是两级表头(两行表头),可以先读取多级表头,再合并后筛选目标列:

import pandas as pd

# 读取两行作为多级表头
df = pd.read_excel("your_file.xlsx", header=[0, 1])
# 合并多级表头为单级(过滤空值避免冗余)
df.columns = ["_".join(filter(None, col)) for col in df.columns]
# 仅保留目标列
df = df[["B", "C", "D", "E", "F", "G"]]

场景2:给B、C、D列添加A列表头作为前缀(如A_B、A_C、A_D)

先读取两级表头,再根据A列的第一行表头为B、C、D列添加前缀,E、F、G列保持原名:

import pandas as pd

# 读取两行作为多级表头
df = pd.read_excel("your_file.xlsx", header=[0, 1])
# 获取A列的第一行表头作为前缀
prefix = df.columns[0][0]

# 处理列名
new_columns = []
for col in df.columns:
    if col[1] in ["B", "C", "D"]:
        new_columns.append(f"{prefix}_{col[1]}")
    elif col[1] in ["E", "F", "G"]:
        new_columns.append(col[1])
    # 跳过A列相关的列
    else:
        continue

df.columns = new_columns
# 确保只保留目标列
df = df[[col for col in df.columns if col in [f"{prefix}_B", f"{prefix}_C", f"{prefix}_D", "E", "F", "G"]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:23:11