84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
ringa_lee
所以說你真的就把pandas 當讀取資料的工具了嗎..
增加了一列is_tobacco 作為你說的標記
filter_query 回傳含有這些字的清單 效率有一定提升
其次你可以分割後用 multiprocessing 執行 這個加速起來不只一點半點
import pandas as pd word = pd.read_table('test.txt', encoding = 'utf-8', names = ['query']) def signquery(word): tobacco = [u'烟', u'白沙', u'黄金叶', u'利群', u'南京九五', u'黄鹤楼软', u'黄鹤楼硬', u'娇子', u'钻石荷花', u'玉溪', u'七匹狼尚品', u'七匹狼软灰'] word['is_tobacco'] = word['query'].apply(lambda name:name in tobacco) return word def filter_query(word): tobacco = [u'烟', u'白沙', u'黄金叶', u'利群', u'南京九五', u'黄鹤楼软', u'黄鹤楼硬', u'娇子', u'钻石荷花', u'玉溪', u'七匹狼尚品', u'七匹狼软灰'] return word[word['query'].apply(lambda name:name in tobacco)]['query'].to_dict().values() result = filter_query(word) print result
可以試試用正規:
import re pattern = re.compile(u'烟|白沙|黄金叶|利群|南京九五|黄鹤楼软|黄鹤楼硬|娇子|钻石荷花|玉溪|七匹狼尚品|七匹狼软灰') result = filter(pattern.search, word['query'])
KMP 演算法
KMPManacherTireTree
KMP
Manacher
TireTree
所以說你真的就把pandas 當讀取資料的工具了嗎..
增加了一列is_tobacco 作為你說的標記
filter_query 回傳含有這些字的清單 效率有一定提升
其次你可以分割後用 multiprocessing 執行 這個加速起來不只一點半點
可以試試用正規:
KMP 演算法
KMP
Manacher
TireTree