2017-08-14 1 views
1

Ich habe ein Skript zum Überprüfen von 2 Textdateien zusammen und drucken Sie das gemeinsame Feld aus. Ich denke jedoch nicht, dass es schnell genug ist und ich suche nach Optimierung.überprüfen Sie 2 Spalten Skript, um schnell zu laufen

FILE1 (10k Zeilen, 3 Spalten) und FILE2 (200k Zeilen, 2 Spalten) mit 1 gemeinsamen Feld für beide Dateien (csv-Dateien).

FILE1:

92073263d, 86674404000555506123, Kommunikation

FILE2:

163738212,7a93632111w7-01e7-40e7-9387-1863e7683eca 63729jd83,07633221122c-6598-4489-b539-e42e2dcb3235 8djdy37w8,2b8retyre396-2472-4b2d-8d07-e170fa3d1f64 92073263d, 07633221122c-6ew8-4eww-b539-e42dsadsadsa

with open('FILE1') as file1: 
    file1_contents = { tuple(line.split(',')) for line in file1 } 
    print file1_contents 

with open('FILE2') as file2: 
    for line in file2: 
     c1,c2 = line.split() 
    if c1 in file1_contents: 
      f = open("FILE3","w") 
      f.write(c2) 
      f.close() 

Diese Zeile, wenn c1 in file1_contents gibt mir eine harte Zeit, wie ich jede verschachtelte Schleife vermeiden möchte, um hohe Geschwindigkeit zu erhalten. Irgendein Vorschlag?

+0

Versuchen 'pandas' mit ... –

+0

dank COLDSPEED. – Jul

Antwort

1

dank COLDSPEED again..here meine neue Code ist:

import pandas 

data_comreport= pandas.read_csv('FILE1', sep = ',', header = 0) 
data_db= pandas.read_csv('FILE2', sep = ',', header = None) 
data_db.columns = ['SerialNumber', 'GUID'] 
data = pandas.merge(data_db,data_comreport,left_on = 'SerialNumber', right_on='SerialNumber', how='inner') 
print data 
#result = data.loc[data['FailureReason'] != ['Failure to export']] 
#if result != None: 
clean_data=data.to_csv('list.txt',index=False, columns=['GUID'],header = None) 
Verwandte Themen