CSV文件在Python中将列转换为行

CSV文件在Python中将列转换为行,python,csv,Python,Csv,我一直在为这个伤脑筋,我可能只需要退一步 我有这样一个CSV文件:(虚拟数据-可能有1-20个参数) 汽车、名字、年龄、颜色 福特,迈克,45岁,蓝色 大众,彼得,67岁,黄色 需要 汽车、参数、价值 福特,名字,迈克 福特,45岁 福特,彩色,蓝色 大众,名字,彼得 大众,年龄,67岁 大众,彩色,黄色 我在看: 但我认为,因为我想保持CAR列的静态,Python zip函数可能无法破解它 对这位阳光明媚的周五大师有什么想法吗 问候 >使用: 输入和输出示例: >>>

我一直在为这个伤脑筋,我可能只需要退一步

我有这样一个CSV文件:(虚拟数据-可能有1-20个参数)

汽车、名字、年龄、颜色

福特,迈克,45岁,蓝色

大众,彼得,67岁,黄色

需要

汽车、参数、价值

福特,名字,迈克

福特,45岁

福特,彩色,蓝色

大众,名字,彼得

大众,年龄,67岁

大众,彩色,黄色

我在看:

但我认为,因为我想保持CAR列的静态,Python zip函数可能无法破解它

对这位阳光明媚的周五大师有什么想法吗

问候

>使用:

输入和输出示例:

>>> df_in
    CAR   NAME  AGE  COLOUR
0  Ford   Mike   45    Blue
1    VW  Peter   67  Yellow
>>> df_out
    CAR PARAMETER   VALUE
0  Ford      NAME    Mike
1  Ford       AGE      45
2  Ford    COLOUR    Blue
3    VW      NAME   Peter
4    VW       AGE      67
5    VW    COLOUR  Yellow
我能够使用一些调整,现在一切都很好

import csv

with open('transposed.csv', 'wt') as destfile:
    writer = csv.writer(destfile)
    writer.writerow(['car', 'parameter', 'value'])
    with open('input.csv', 'rt') as sourcefile:
        for d in csv.DictReader(sourcefile):
            car= d.pop('car')
            for parameter, value in sorted(d.items()):
                row = [car, parameter.upper(), value]
                writer.writerow(row)

嗨,Stef,非常感谢你的投入。我本来想尝试不使用任何外部的东西,我已经有了,我现在可以使用,我已经准备好了,谢谢
import csv

with open('transposed.csv', 'wt') as destfile:
    writer = csv.writer(destfile)
    writer.writerow(['car', 'parameter', 'value'])
    with open('input.csv', 'rt') as sourcefile:
        for d in csv.DictReader(sourcefile):
            car= d.pop('car')
            for parameter, value in sorted(d.items()):
                row = [car, parameter.upper(), value]
                writer.writerow(row)