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



我一直在为此伤脑筋,我可能只需要退后一步。

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

汽车,姓名,年龄,颜色

福特,迈克,45,蓝色

大众,彼得,67,黄色

并且需要

汽车,参数,值

福特,姓名,迈克

福特,年龄,45

福特,颜色,蓝色

大众,名字,彼得

大众,年龄,67

大众,颜色,黄色

我正在看:

如何在csv文件中转置数据集?

如何在csv文件中转置数据集?

Python 编写带有行和列转置的.csv文件

但我认为因为我想保持CAR列静态,Python zip函数可能不会破解它。

对这个阳光明媚的星期五大师有什么想法吗?

问候!

>之前将列转置为行

使用熊猫:

df_in = read_csv('infile.csv')
df_out = df_in.set_index('CAR').stack().reset_index()
df_out.columns = ['CAR', 'PARAMETER', 'VALUE']
df_out.to_csv('outfile.csv', index=False)

输入和输出示例:

>>> 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

我能够使用 Python - 在数据操作中将列转置为行,然后通过一些调整写入文件,现在一切正常。

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)

最新更新