ホームページ > バックエンド開発 > Python チュートリアル > 特殊文字を含む複数の部分文字列に基づいて Pandas 行を効率的にフィルタリングするにはどうすればよいですか?

特殊文字を含む複数の部分文字列に基づいて Pandas 行を効率的にフィルタリングするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-28 09:09:15
オリジナル
566 人が閲覧しました

How Can I Efficiently Filter Pandas Rows Based on Multiple Substrings, Including Special Characters?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート