ホームページ >バックエンド開発 >Python チュートリアル >大文字と小文字と特殊文字を処理して、複数の部分文字列の Pandas データフレームを効率的にフィルタリングするにはどうすればよいですか?
複数の部分文字列に対する Pandas データフレームの効率的なフィルタリング
部分文字列に対するデータフレームのフィルタリングは一般的なタスクですが、大規模なデータセットでは計算コストが高くなる可能性があります。珍しい文字や大文字と小文字を区別しない一致を扱う場合、この課題はさらに複雑になります。
問題:
文字列列を持つ Pandas データフレームが与えられた場合、次のような行を効率的にフィルタリングします。大文字と小文字や特殊文字に関係なく、列には部分文字列のリストが少なくとも 1 つ含まれています。 present.
非効率なアプローチ:
最初のアプローチでは、リスト内の各部分文字列を反復処理し、regex=False と case を指定して str.contains() メソッドを適用しました。 =偽旗。このアプローチは簡単ですが、大規模なデータセットでは時間がかかる可能性があります。
効率的なアプローチ:
より効率的なソリューションでは、正規表現を利用して、エスケープされたすべての文字列を含むパターンを構築します。正規表現パイプ | で結合された部分文字列。次に、str.contains() メソッドを使用して、このパターンが列内の各文字列に対してチェックされます。
import re lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*'] esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst) df[col].str.contains(pattern, case=False)
このアプローチは、特にエスケープが必要な大規模なデータセットや部分文字列の場合、反復的なアプローチよりも大幅に高速に実行されます。
パフォーマンス評価:
でのデータセットの使用50,000 個の文字列と 100 個の部分文字列の場合、提案された方法では完了までに約 1 秒かかりますが、反復方法では約 5 秒かかります。いずれかの部分文字列が列の値と一致すると、タイミングはさらに改善されます。
以上が大文字と小文字と特殊文字を処理して、複数の部分文字列の Pandas データフレームを効率的にフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。