Python 按列1和标题行重新排列外部参照/csv
希望有人以前遇到过这样的事情。。。。我在Linux服务器上有一个csv文件,我需要将其“转换”为一种格式,以便在其他产品中用作查找表。当前的文件格式不适合这个其他产品,所以我希望将数据重新排列成我可以使用的格式 我曾尝试使用bash脚本,但没有取得太多成功(主要是性能),但我怀疑,由于我对该语言的了解非常有限,Python将是一个更好的候选者 我的当前文件有一个标题行,第一列是日期,即Python 按列1和标题行重新排列外部参照/csv,python,linux,bash,csv,Python,Linux,Bash,Csv,希望有人以前遇到过这样的事情。。。。我在Linux服务器上有一个csv文件,我需要将其“转换”为一种格式,以便在其他产品中用作查找表。当前的文件格式不适合这个其他产品,所以我希望将数据重新排列成我可以使用的格式 我曾尝试使用bash脚本,但没有取得太多成功(主要是性能),但我怀疑,由于我对该语言的了解非常有限,Python将是一个更好的候选者 我的当前文件有一个标题行,第一列是日期,即 Date,USD,JPY,BGN,CYP, 2017-04-28,1.093,121.76,1.9558,26
Date,USD,JPY,BGN,CYP,
2017-04-28,1.093,121.76,1.9558,26.922,
2017-04-27,1.0881,121.27,1.9558,26.937,
(这是一个非常简化的示例!实际上,共有43列和4600行)
我的目标是创建一个输出文件,它看起来像
Date, Currency, FX_Rate
2017-04-28, USD, 1.093
2017-04-28, JPY, 121.76
2017-04-28, BGN, 1.9558
2017-04-28, CYP, 26.922
2017-04-27, USD, 1.0881
2017-04-27, JPY, 121.27
2017-04-27, BGN, 1.9558
2017-04-27, CYP, 26.937
(空间是不相关的-我只是添加了它们以试图让它更清晰)
谢谢你的帮助
标记。这可以使用Python内置的
csv
库来完成。以下内容适用于Python2.x安装
import csv
with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
csv_input = csv.reader(f_input)
csv_output = csv.writer(f_output)
header = next(csv_input)
csv_output.writerow(["Date", "Currency", "FX_Rate"])
for row in csv_input:
date = row[0]
for index, currency in enumerate(row[1:], start=1):
csv_output.writerow([date, header[index], currency])
给你:
日期、货币、外汇汇率
2017-04-28,美元,1.093
2017-04-28,日元,121.76
2017-04-28,BGN,1.9558
2017-04-28,CYP,26.922
2017-04-27,美元,1.0881
2017-04-27,日元,121.27
2017-04-27,BGN,1.9558
2017-04-27,CYP,26.937
如果正在使用Python 3,则需要进行如下更改:
with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output: