[英]Combining CSV files column-wise
假設我在Python
有兩個名為A
和B
CSV文件。
A
的head
看起來像:
headerNameA1,headerNameA2
1.12412424,1
1,1
1,1
1,1
B
的head
看起來像:
headerNameB1,headerNameB2
1,1
1,1
1,1
1,1
我的目標是將兩者合並到文件C
。 但是,我的目標也不是將它們加載到RAM中,因為它們是大文件。 結果C
為:
headerNameA1,headerNameA2,headerNameB1,headerNameB2
1.12412424,1,1,1
1,1,1,1
1,1,1,1
1,1,1,1
如果解決方案可以合並多個CSV文件,則可以加分。 但是,如果在解決方案中不可能做到這一點,那是很好的 ,因為我總是可以將其他任何內容與C
成D
,然后再將其他任何內容與D
成無窮大的E
可將溶液Python
或基於terminal
通過基於os.system
在Python
。
您可以一次使用兩個文件中的一行,將它們連接在一起並寫入外文件。 csv
模塊使事情變得更干凈。
import csv
with open('A','rb') as f1, open('B','rb') as f2, open('out.csv','wb') as w:
writer = csv.writer(w)
r1,r2 = csv.reader(f1),csv.reader(f2)
while True:
try:
writer.writerow(next(r1)+next(r2))
except StopIteration:
break
就像@RogerPate指出的那樣,您可以使用itertools.izip
(如果您使用的是python3,則為zip
)來簡化此設置
from itertools import izip
import csv
with open('A','rb') as f1, open('B','rb') as f2, open('out.csv','wb') as w:
writer = csv.writer(w)
for r1,r2 in izip(csv.reader(f1),csv.reader(f2)):
writer.writerow(r1+r2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.