Pandas シリーズでの複数の部分文字列フィルタリングのパフォーマンスの向上
特定の文字列列に少なくとも 1 つの部分文字列が含まれる行をフィルタリングしようとするとき指定されたリストでは、np.logical_or.reduce() を使用する従来の方法は、大規模なデータセットに対して非効率的になる可能性があります。この記事では、正規表現を活用してパフォーマンスを向上させる別のアプローチについて説明します。
提案された解決策
str.contains() で regex=False を使用する代わりに、正規表現を使用します。 re.escape() を使用して提供された部分文字列を適切にエスケープした後。これにより、正規表現の解釈ではなく、リテラルの一致が保証されます。エスケープされた部分文字列は、正規表現パイプ (|) を使用して単一のパターンに結合されます。
マスキング プロセス
マスキング ステージは一連のループになり、次のことを確認します。各文字列はパターンと一致します:
df[col].str.contains(pattern, case=False)
パフォーマンス比較
長さ 5 の部分文字列 100 個と長さ 20 の文字列 50,000 個を含むサンプル データセットを使用した場合、提案された方法の所要時間は約 1 秒でした。元の方法では、同じデータに対して約 5 秒かかりました。
注
このソリューションは、部分文字列の一致がない「最悪の場合」のシナリオを想定しています。一致する場合は、パフォーマンスがさらに向上します。さらに、このアプローチは最初の方法より効率的であり、行ごとに必要なチェックの数が減少します。
以上が正規表現はどのように Pandas シリーズの部分文字列フィルタリングのパフォーマンスを向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。