簡體   English   中英

逐列合並CSV文件

[英]Combining CSV files column-wise

假設我在Python有兩個名為AB CSV文件。

Ahead看起來像:

 headerNameA1,headerNameA2
 1.12412424,1
 1,1
 1,1
 1,1

Bhead看起來像:

 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文件,則可以加分。 但是,如果在解決方案中不可能做到這一點,那是很好的 ,因為我總是可以將其他任何內容與CD ,然后再將其他任何內容與D成無窮大的E

可將溶液Python或基於terminal通過基於os.systemPython

您可以一次使用兩個文件中的一行,將它們連接在一起並寫入外文件。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM