ホームページ >バックエンド開発 >Python チュートリアル >特殊文字を含む複数の部分文字列に基づいて Pandas 行を効率的にフィルタリングするにはどうすればよいですか?
Pandas: 複数の部分文字列の行を効率的にフィルタリングする
複数の部分文字列に基づいて pandas データフレームをフィルタリングすることは、特に部分文字列に珍しい文字が含まれている場合に困難になることがあります。 。この記事では、正規表現とパンダの文字列一致関数を組み合わせた効率的なソリューションを提供します。
提供された部分文字列のリスト (lst) には、通常の文字と特殊文字の両方を含む要素が含まれています。文字どおり一致させるには、re.escape を使用してこれらの特殊文字をエスケープし、正規表現パイプ (|) を使用してそれらを結合します。
esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst)
これで、ターゲット列 (col) の各行を効率的にチェックできます。 str.contains を使用したパターンに対して:
col.str.contains(pattern, case=False)
このアプローチは、ネストされたループと複数の str.contains を使用した元のソリューションよりも大幅に優れています。
パフォーマンスの比較
20 文字の文字列 50,000 個と 5 文字の部分文字列 100 個を含むデータセットを使用すると、提案されたメソッドの所要時間は約 1 秒です。
%timeit col.str.contains(pattern, case=False) 1 loop, best of 3: 981 ms per loop
比較すると、元のアプローチでは約 5 秒かかりました。
注: タイミングは、一致がなかった最悪のシナリオを表しています。提案された方法は、一致が見つかると部分文字列のチェックを停止するため、一致がある場合のパフォーマンスがさらに向上します。
以上が特殊文字を含む複数の部分文字列に基づいて Pandas 行を効率的にフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。