ホームページ >バックエンド開発 >Python チュートリアル >正規表現は、シリーズ内の複数の部分文字列に対する Pandas フィルタリングをどのように最適化できますか?

正規表現は、シリーズ内の複数の部分文字列に対する Pandas フィルタリングをどのように最適化できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-28 11:26:11697ブラウズ

How Can Regular Expressions Optimize Pandas Filtering for Multiple Substrings in a Series?

シリーズ内の複数の部分文字列に対する Pandas フィルタリングの最適化

背景

文字列内の複数の部分文字列に基づく大きな Pandas データフレームのフィルタリング列は、計算量の多い操作になる可能性があります。従来のアプローチには、各部分文字列にマスクを適用し、論理演算を使用してそれを削減することが含まれます。

提案されたアプローチ

効率を高めるために、正規表現 (エスケープを含む) を活用することをお勧めします。特殊文字) を部分文字列のマッチングに使用します。正規表現パイプ (|) を使用してエスケープされた部分文字列を結合すると、一致するものが見つかるまで各部分文字列を文字列に対してテストできます。

実装

import re

# Escape special characters in substrings
esc_lst = [re.escape(s) for s in lst]

# Join escaped substrings using regex pipe
pattern = '|'.join(esc_lst)

# Filter based on concatenated pattern
df[col].str.contains(pattern, case=False)

パフォーマンスに関する考慮事項

パフォーマンスは次のように強化されます。行ごとに必要なテストの数が減ります。このメソッドは、一致が見つかるまで部分文字列をチェックし、不要な反復を排除します。

ベンチマーク

50,000 個の文字列と 100 個の部分文字列を含むサンプル データフレームを使用すると、提案されたメソッドは約 1 回の処理を要します。従来のアプローチの 5 秒と比較して、2 秒です。このパフォーマンス上の利点は、データセットが大きくなるほど増大します。

結論

エスケープされた特殊文字を含む正規表現を活用することで、複数の部分文字列の Pandas データフレームを効率的にフィルタリングでき、大幅なコスト削減が可能になります。計算オーバーヘッド。

以上が正規表現は、シリーズ内の複数の部分文字列に対する Pandas フィルタリングをどのように最適化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。