ホームページ >バックエンド開発 >Python チュートリアル >Pandas シリーズ内の複数の部分文字列を効率的にチェックするにはどうすればよいですか?

Pandas シリーズ内の複数の部分文字列を効率的にチェックするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-14 15:04:11704ブラウズ

How Can I Efficiently Check for Multiple Substrings Within a Pandas Series?

Pandas DataFrame を使用した文字列内の部分文字列の存在のテスト

Python の Pandas ライブラリで文字列データを操作する場合、次のことを確認する必要がある場合があります。文字列には、指定されたリストの任意の部分文字列が含まれます。 df.isin() や df[col].str.contains() など、部分文字列の存在をチェックするさまざまな関数がありますが、それらを組み合わせて使用​​するとやや複雑になる可能性があります。

パンダがあるとします。 「cat」、「hat」、「dog」、「fog」、「pet」などの文字列を含むシリーズ。「og」または「og」のいずれかを含むすべての文字列を識別したいと考えています。 "at."

解決策の 1 つは、「|」を使用してリスト内の任意の部分文字列と一致する正規表現パターンを採用することです。キャラクター。たとえば、「|」を使用して searchfor の部分文字列を結合することにより、次の正規表現を作成します。

>>> searchfor = ['og', 'at']
>>> regex_pattern = '|'.join(searchfor)
>>> s[s.str.contains(regex_pattern)]
0    cat
1    hat
2    dog
3    fog
dtype: object

このアプローチでは、「og」または「at」のいずれかを含む s 内のすべての文字列が効果的に検索されます。これは簡潔で効率的な方法です。

ただし、searchfor の部分文字列に「$」や「^」などの特殊文字が含まれている場合は、re.escape() を使用してそれらをエスケープし、リテラル一致を保証することが重要です。例:

>>> import re
>>> matches = ['$money', 'x^y']
>>> safe_matches = [re.escape(m) for m in matches]
>>> regex_pattern = '|'.join(safe_matches)
>>> s[s.str.contains(regex_pattern)]
0    cat
1    hat
2    dog
3    fog
dtype: object

特殊文字をエスケープすることで、str.contains で使用した場合に、特殊文字が文字通り各文字と一致することが保証されます。このアプローチは、Pandas シリーズでの部分文字列検出のための堅牢なソリューションを提供します。

以上がPandas シリーズ内の複数の部分文字列を効率的にチェックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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