2016-03-23 24 views
0

Burada, bu 4 dosyanın her birinin bir sütununu kopyalamak istediğim 4 .csv dosyası var ve bunları birleştir Yeni bir .csv ana dosyasının ilk sütunu olarak tek bir sütuna. Daha sonra, aynı işlemi tekrar başka bir sütun grubuyla tekrarlayın ve ana dosyanın ikinci bir sütunu olarak saklayın ve en az 12 kez daha tekrarlayın. İşte Python- Birden çok .csv dosyasından sütunlar alıp yeni .csv ana dosyasına yapıştırın

benim kod şimdiye kadar geçerli:

Kodunuzu

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) 

bir öneriniz?

Mesajın biçimlendirmeye ihtiyacı varsa lütfen bildirin.

cevap

0

Burada ne yapmaya çalışıyorsunuz? Eğer tüm csv'yi olduğu gibi birleştirmek istiyorsanız o zaman iyi olacaktır.

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()