2017-08-14 9 views
1

私は2つのテキストファイルを一緒にチェックして共通フィールドを表示するスクリプトを持っています。しかし、私はそれが十分に速いと私は最適化を探しているとは思わない。2列スクリプトを高速実行するには

FILE1(10k行、3列)およびFILE2(200k行、2列)、両方のファイル(csvファイル)に共通の1フィールド。

FILE1:

92073263d、86674404000555506123、コミュニケーション

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

file1_contentsのc1が高速を維持するためにネストされたループを避けたい場合、この行は私には苦労しています。なにか提案を? COLDSPEEDのagain..hereが私の新しいコードで

+0

'pandas'を使用してみてください... –

+0

感謝COLDSPEED。 – Jul

答えて

1

感謝:

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) 
関連する問題