我一直在为此伤脑筋,我可能只需要退后一步。
我有一个这样的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)