我有两个.csv文件,headers.csv
和corrected.csv
。 headers.csv
包含所有标题,corrected.csv
只是一堆有组织的数据。
headers.csv:
displacement, load, cputime, ...
corrected.csv:
-990.478170,-0.000026,15:08:06, ...
-990.038170,-0.000026,15:08:06, ...
The end goal is to be like this example:
displacement,load,cputime, ...
-990.478170,-0.000026,15:08:06, ...
-990.038170,-0.000026,15:08:06, ...
我有什么:
headers = [x for x in csv.reader(open('headers.csv', 'rb'))]
writer = csv.writer(open('merged.csv', 'wb'))
writer.writerow(headers)
for row in csv.reader(open('corrected.csv', 'rb')):
writer.writerow(row)
然而,结果是"['displacement', 'load', 'cputime', ...]"
全部写入A列,而我想要在A列中移位,在B列中加载,在C列中加载cputime等等。我还想摆脱{ {1}}所以最终结果与我上面的例子完全一样。提前谢谢!
答案 0 :(得分:2)
假设您有一行以逗号分隔的列名,请尝试:headers = next(csv.reader(open('headers.csv')))
答案 1 :(得分:2)
使用python连接文件似乎有点矫枉过正 -
cat headers.csv corrected.csv > merged.csv
如果您因某种原因想要使用Python,Jon Clements有正确的想法。
答案 2 :(得分:1)
在第一行中,您将创建一个列表(一个理解列表),其中包含headers.csv中的所有行,这就是您拥有[]等的原因。
尝试这个(从我的脑海中开始):
headers = csv.reader(open('headers.csv', 'rb'))[0]
哪个应该只返回第一行。
答案 3 :(得分:1)
我只是隐藏了csv模块中有多个文件的事实:
import csv
def cat(*files):
for f in files:
with open(f) as fobj:
for line in fobj:
yield line
writer = csv.writer(open('merged.csv', 'wb'))
for row in csv.reader(cat('headers.csv', 'corrected.csv')):
writer.writerow(row)