2016-03-23 6 views
0

SO ist hier die Sache, ich habe 4 CSV-Dateien, die ich eine Spalte aus jeder dieser 4 Dateien kopieren und sie zusammenführen möchte in eine einzelne Spalte als erste Spalte einer neuen .csv-Master-Datei. Wiederholen Sie den gleichen Vorgang dann erneut mit einem anderen Satz verschiedener Spalten und speichern Sie ihn als zweite Spalte der Hauptdatei, und wiederholen Sie ihn mindestens 12 weitere Male.Python - Nehmen Sie Spalten aus mehreren CSV-Dateien und fügen Sie sie in neue CSV-Master-Datei

Hier ist mein Code so weit:

CODE-

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) 

Irgendwelche Vorschläge?

Bitte lassen Sie mich wissen, wenn der Beitrag formatiert werden muss.

Antwort

0

Was möchten Sie hier tun? Wenn Sie alle CSV zu einem zusammenführen möchten, wie es ist, dann wird es gut sein.

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