2015-07-10 2 views
1

Я работаю с очень большими наборами данных (1.5gb +) и выполняю частичные поиски строк на нем.Лучшее решение для частичного поиска строк с помощью Pandas

Я был в состоянии написать сценарий для моей работы, но это занимает слишком много времени:

fhand = open('C:/Users/promotor/Documents/tce-sagres/TCE-PB-SAGRES-Empenhos_Esfera_Municipal.txt','r') 
pergunta = raw_input('Pesquisa: ') 
fresult = open('resultado.csv','w') 
for line in fhand : 
    #linha = linha + 0.001 
    #update_progress(int(linha)*1000) 
    if pergunta in line : 
     print line 
     fresult.write(line) 
print "terminado.""" 

мне было интересно, будет ли более быстрый способ сделать это на панд. Я попробовал str.contains, но я мог искать только столбец. Мне было интересно, будет ли более быстрый способ. Я попробовал «str.contains», но я мог искать только один столбец.

С уважением.

ответ

0

Вы повторяете цикл for, и это то, что, вероятно, занимает много времени. Я рекомендую прочитать весь файл в виде строки, а затем использовать регулярное выражение для соответствия вашему шаблону.

Попробуйте следующий код,

import re 
with open(your_file_name,'r') as f: 
    lines=f.read() 
name = input('pattern :') 
pattern_to_match = r'(?<=\n).*%s.*(?=\n)'%name 
matched_pattern = re.findall(pattern_to_match, lines, re.IGNORECASE) 
print (matched_pattern) 
+0

Спасибо. Но файл был слишком большим (10gb csv), поэтому я решил поместить его в базу данных sqlite и искать там форму. Спасибо, в любом случае! – nicmano

Смежные вопросы