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

如何用Pandas处理双表头CSV:将第二行表头按每行转置?

解决方案

假设你的CSV文件结构如下(示例):

ID,Value,Category
Identifier,Amount,Type
1,100,A
2,200,B
3,300,C

需求是将第一行作为最终表头,同时把第二行的表头内容作为额外列添加到每一行数据中,最终输出类似:

ID,Value,Category,ID_Label,Value_Label,Category_Label
1,100,A,Identifier,Amount,Type
2,200,B,Identifier,Amount,Type
3,300,C,Identifier,Amount,Type

你之前尝试的transpose、pivot、pivot_table都不符合这个场景——这些函数用于整体转置或重塑宽/长表,而我们需要的是提取单独一行并将其作为固定列追加到所有数据行。以下是可行的代码实现:

import pandas as pd

# 读取CSV所有内容,不设置表头
all_content = pd.read_csv("your_file.csv", header=None)

# 提取第一行作为最终表头
final_headers = all_content.iloc[0].tolist()
# 提取第二行作为要追加到每一行的标签内容
label_content = all_content.iloc[1].tolist()
# 提取第三行及以后的实际数据
data_df = all_content.iloc[2:]

# 给数据设置最终表头
data_df.columns = final_headers

# 生成标签列的名称(可自定义命名规则)
label_columns = [f"{col}_Label" for col in final_headers]
# 将标签内容赋值给所有行的新列
data_df[label_columns] = label_content

# 重置索引(可选,清理索引)
data_df = data_df.reset_index(drop=True)

# 查看结果或保存到新CSV
print(data_df)
# data_df.to_csv("output.csv", index=False)

关键步骤说明

  • 先读取所有内容而不指定表头,这样能完整获取前两行的表头信息和后续数据
  • 通过iloc精准提取需要的行:第一行做表头,第二行做固定标签,第三行及以后是数据
  • 直接将标签行赋值给新列,pandas会自动将这一行内容广播到所有数据行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:00:54