ホームページ >バックエンド開発 >Python チュートリアル >「IN」および「NOT IN」演算子を使用して Pandas DataFrame を効率的にフィルタリングするにはどうすればよいですか?

「IN」および「NOT IN」演算子を使用して Pandas DataFrame を効率的にフィルタリングするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 16:22:19838ブラウズ

How Can I Efficiently Filter Pandas DataFrames Using

Pandas データフレームを「In」と「Not In」でフィルタリングする: よりシンプルなソリューション

Pandas データフレームを操作する場合、多くの場合、これが必要になります。特定の基準に基づいてデータをフィルタリングします。一般的な要件の 1 つは、SQL の "IN" および "NOT IN" 演算子と同様に、特定の列が事前定義された値のセットと一致する行、または一致しない行を検索することです。

マージの代替手段ベースのアプローチ

従来、一部のユーザーはこのフィルタリングを実現するためにマージベースのアプローチを採用していました。このメソッドは機能しますが、非効率的で不必要に複雑であると考えられています。

pd.Series.isin の使用

理想的な解決策は、pd.Series.isin 関数を使用することです。これは、「IN」フィルタリングと「NOT IN」フィルタリングの両方の簡単な機能を提供します。

「IN」フィルタリング

特定の列がフィールド内の任意の値と一致する行をフィルタリングするには提供されたリストでは、次を使用します:

something.isin(somewhere)

"NOT IN"フィルタリング

または、列の値が指定されたリスト内のどの値にも一致しない行をフィルタリングするには、次を使用します。

~something.isin(somewhere)

使用例

次の点を考慮してください例:

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})

countries_to_keep = ['UK', 'China']

df_in = df[df.country.isin(countries_to_keep)]
df_not_in = df[~df.country.isin(countries_to_keep)]

print(df_in)
print(df_not_in)

出力:

    country
1        UK
3     China
    country
0        US
2   Germany

示されているように、pd.Series.isin は、Pandas データフレームをフィルタリングするための簡潔で効率的な方法を提供します。これにより、複雑なマージベースのアプローチが不要になり、フィルタリング プロセスがよりシンプルになり、よりパフォーマンスが向上します。

以上が「IN」および「NOT IN」演算子を使用して Pandas DataFrame を効率的にフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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