2017-08-02 40 views
1

我有兩個dataframes是其中如下:搜索在多個文件中多次subtrings的指標

df1 : contains one variable ['search_term'] and 100000 rows 

這些詞/詞組我想在我的文件中搜索

df2: contains parsed file contents in a column called file_text 

此數據框中有20000行,並且有兩列['file_name','file_text']

我需要的是file_text中每個搜索項外觀的索引。

我找不出一個有效的方法來執行此搜索。

我使用str.find()函數與GROUPBY一起,但它採取0.25秒左右每FILE_TEXT搜索項(其中長成爲真正具有20K文件* 100K的搜索字詞)

任何想法就如何以快速有效的方式做到這一點將是救生員!

+0

將您的問題縮短爲具有輸入和預期輸出的代表性示例。基本上,看看如何提供[mcve]。 –

+1

如果您有工作代碼,並且想要改進它,那麼您可以在這裏獲得更好的機會:https://codereview.stackexchange.com/ – Toto

+0

'dataframe'是什麼意思?我從來沒有聽說過這樣的事情。 – darksky

回答

0

我記得在我們的一個項目中做了類似的事情。我們有一個非常大的關鍵字集,我們希望以大字符串搜索它們並查找所有這些關鍵字的出現。我們在content中調用我們要搜索的字符串。經過一些基準測試後,我採用的解決方案是雙通道方法:首先使用高度優化的in運算符檢查content中是否存在關鍵字,然後使用正則表達式查找它的所有實例。

import re 

keywords = [...list of your keywords ...] 
found_keywords = [] 

for keyword in keywords: 
    if keyword in content: 
     found_keywords.append(keyword) 

for keyword in found_keywords: 
    for match in re.finditer(keyword, content): 
     print(match.start())