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

如何使用Python将宽格式CSV表格重塑为长格式?

Python 重塑CSV数据:宽格式转长格式

我有一个宽格式的CSV文件,每行代表一个组织,列对应不同变量的值。需要将其重塑为每行对应一个(Date, Org ID, Variable, Value)元组的格式:

原始格式

DateOrg IDABCD
6/30/20220481510152030
6/30/20220171248914

目标格式

DateOrg IDVariableValue
6/30/202204815A10
6/30/202204815B15
6/30/202204815C20
6/30/202204815D30
6/30/202201712A4
6/30/202201712B8
6/30/202201712C9
6/30/202201712D14

解决方案

方法一:使用Pandas(推荐)

Pandas的melt方法专门用于这种宽转长的数据重塑,代码简洁高效:

import pandas as pd

# 读取原始CSV
df = pd.read_csv('your_input.csv')

# 执行重塑操作
melted_df = df.melt(
    id_vars=['Date', 'Org ID'],  # 保留不变的列
    var_name='Variable',         # 原变量列名的新列名
    value_name='Value'           # 原变量值的新列名
)

# 保存结果到新CSV
melted_df.to_csv('your_output.csv', index=False)

方法二:原生Python实现

如果不想依赖第三方库,可以用标准库csv手动处理:

import csv

# 读取原始文件
with open('your_input.csv', 'r', newline='') as infile:
    reader = csv.DictReader(infile)
    result_rows = []
    
    for row in reader:
        # 提取固定列的值
        date = row['Date']
        org_id = row['Org ID']
        # 遍历所有变量列,生成新行
        for var in ['A', 'B', 'C', 'D']:
            result_rows.append({
                'Date': date,
                'Org ID': org_id,
                'Variable': var,
                'Value': row[var]
            })

# 写入目标文件
with open('your_output.csv', 'w', newline='') as outfile:
    fieldnames = ['Date', 'Org ID', 'Variable', 'Value']
    writer = csv.DictWriter(outfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(result_rows)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:36:19