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

Python实现将数据行转换为表头并保留原有数据

用Python将长格式CSV转换为宽格式表格

你的需求是把按列名循环出现的长格式CSV,转换成列名作为表头、每组对应一行的宽格式表格。不需要用groupby或MultiIndex,用以下两种方法都可以快速实现:

方法一:使用Pandas(推荐,适合大数据量)

Pandas的pivot方法可以轻松完成格式转换,核心是先给每组数据添加分组标识:

import pandas as pd

# 读取CSV,处理逗号后的空格,指定列名
df = pd.read_csv('input.csv', header=None, names=['列名', '值'], skipinitialspace=True)

# 生成分组编号:每4行(A/B/C/D各一行)为一组
df['分组'] = df.index // 4

# 转换为宽格式,去掉分组索引
result = df.pivot(index='分组', columns='列名', values='值').reset_index(drop=True)

# 打印结果(不带索引)
print(result.to_string(index=False))

# 保存到新CSV
# result.to_csv('output.csv', index=False)

运行后就会得到你想要的格式,pivot会自动把列名列的A/B/C/D转为表头,每个分组对应一行值。

方法二:纯Python实现(无需依赖库)

如果不想用第三方库,用原生Python也可以处理:

# 读取原始数据
raw_data = []
with open('input.csv', 'r', encoding='utf-8') as f:
    for line in f:
        # 分割每行的列名和数值,处理空格
        col, val = line.strip().split(', ')
        raw_data.append((col, int(val)))

# 每4个元素为一组,整理成字典
formatted_groups = []
for i in range(0, len(raw_data), 4):
    group_dict = {col: val for col, val in raw_data[i:i+4]}
    formatted_groups.append(group_dict)

# 获取表头(A/B/C/D)
headers = list(formatted_groups[0].keys())

# 打印表头
print('\t'.join(headers))
# 打印每行数据
for group in formatted_groups:
    print('\t'.join(str(group[col]) for col in headers))

这个方法通过按步长4分割原始数据,把每组的键值对转为字典,再按顺序输出表头和每行内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:58:19