0
2つのデータフレームで2つの特定の単語を一致させようとしているときに、パフォーマンスの問題が少しあります。2つのデータフレームの間に正規表現を適用する
def matchWords(row):
row = row[0].upper()
for x in df_X.Names:
if re.search("\\b" + x + "\\b", row):
return 1
return 0
この関数は、ラムダから呼び出され、それが正常に動作しますが、それは非常に長くかかります:私は言葉や他の0次のように私はルックスを書いた関数を含む行ごとに1を返す必要があります実行する時間。速度を上げるために、私はすでにマルチスレッドを適用していましたが、より速くしたいのです。おそらくdf_X.Names
をプリコンパイルする方法はありますか、誰かがこれをより速く/より効率的にするために別のヒントを持っていますか?
ありがとうございました!
あなたは 'df_X.Names'を持っていないという考えが、名1'のような正規表現を準備をするために使用することができます| (regexp)のようなもので、 '' recompile(r '\ b({})\ b'.format( "|" .join(df_X.Names))) –
これはおおまかにしたいことですが、この方法では、 'df_X'データフレームにさまざまな言語(ギリシャ語、中国語、英語など)のエントリがあるのでunicodeEncodeErrorを得ます。 – Kizzle
Pythonのバージョンは何ですか? 2.x?それから、どこでも '' prefex ''を使う必要があります。 –