ホームページ >バックエンド開発 >Python チュートリアル >Pandas で SQL の IN および NOT IN フィルタリングを効率的に実行するにはどうすればよいですか?

Pandas で SQL の IN および NOT IN フィルタリングを効率的に実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 20:05:17314ブラウズ

How Can I Efficiently Perform SQL's IN and NOT IN Filtering in Pandas?

Pandas でのオブジェクト指向 SQL のようなフィルタリング

Pandas データフレームのフィルタリングはデータ分析において重要なタスクであり、効果的に利用する方法を理解するSQL に似た演算子を使用すると、このプロセスを大幅に簡素化できます。特に、IN 演算子と NOT IN 演算子は、メンバーシップ基準に基づいて行を選択するために広く使用されています。

Pandas SQL の IN および NOT IN と同等

Pandas の SQL の IN 演算子では、Series で isin() メソッドを利用できます。このメソッドは、Series 内の各要素が指定されたリストまたはセット内に含まれているかどうかを確認します。たとえば、含める国のリストに基づいてデータフレームをフィルターするには:

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

これにより、countries_to_keep リストに国の列の値が存在する行のみを含むデータフレームが返されます。

SQL の NOT IN と同等の処理を実行するには、~ を使用して isin() メソッドを否定するだけです。演算子:

df[~df['country'].isin(countries_to_keep)]

これにより、国列の値が指定されたリストと一致する行を除いたデータフレームが生成されます。

次のデータフレーム:

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

国が含まれる行のみを選択するにはcountry_to_keep:

df_filtered_in = df[df['country'].isin(countries_to_keep)]

これにより、次の結果が得られます:

    country
1        UK
3     China

countrys_to_keep にない国を含む行を選択するには:

df_filtered_not_in = df[~df['country'].isin(countries_to_keep)]

これは、プロデュース:

    country
0        US
2   Germany

結論

Pandas の isin() メソッドは、IN および NOT IN スタイルのフィルタリングを実装する便利で効率的な方法を提供し、強力なメンバーシップ基準に基づいてデータフレームを操作するためのツール。

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

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