2016-03-23 8 views
0

ここには、4つの.csvファイルがあり、これら4つのファイルのそれぞれから1つの列をコピーしてマージします新しい.csvマスターファイルの最初の列として単一の列に追加します。次に、別の列の別の列を使用して同じプロセスを繰り返し、マスターファイルの2番目の列として格納し、少なくとも12回以上もう一度実行します。ここでPython - 複数の.csvファイルから列を取り込み、新しい.csvマスターファイルに貼り付けます

は、これまでの私のコードです:

コード -

import os 
import csv 
import datetime as dt 
from os import listdir 
from os.path import join 
import matplotlib.pyplot as plt 



#get the list of files in mypath and store in a list 

mypath = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/' 
onlycsv = [f for f in listdir(mypath) if '.csv' in f] 

#print out all the files with it's corresponding index 

for i in range(len(onlycsv)): 
print(i,onlycsv[i]) 

#prompt the user to select the files 

option = input('please select file1 by number: ') 
option2 = input('please select file2 by number: ') 

#build out the full paths of the files and open them 

fullpath1 = join(mypath, onlycsv[option]) 
fullpath2 = join(mypath, onlycsv[option2]) 

#create third new.csv file 

root, ext = os.path.splitext(fullpath2) 
output = root + '-new.csv' 

with open(fullpath1) as r1, open(fullpath2) as r2, open(output, 'a') as w: 
    writer = csv.writer(w) 
    merge_from = csv.reader(r1) 
    merge_to = csv.reader(r2) 
    # skip 3 lines of headers 
    for _ in range(3): 
    next(merge_from) 
    for _ in range(1): 
     next(merge_to) 
    for merge_from_row, merge_to_row in zip(merge_from, merge_to): 
     # insert from col 0 as to col 0 
     merge_to_row.insert(1, merge_from_row[2]) 
     # replace from col 1 with to col 3 
     #merge_to_row[0] = merge_from_row[2] 
     # delete merge_to rows 5,6,7 completely 
     #del merge_to_row[5:8] 
     writer.writerow(merge_to_row) 

任意の提案ですか?

投稿に書式設定が必要かどうかお知らせください。

答えて

0

ここで何をしようとしていますか?すべてのcsvを1つにマージしたい場合は、それが良いでしょう。

with open(fullpath1) as r1, open(fullpath2) as r2, open(output, 'a') as fout: 
    for line in r1: 
     fout.write(line) 
    for line in r2: 
     fout.write(line) 
    fout.close() 
関連する問題