Python
のPandas
ライブラリを使用して、DataFrameの特定の列の値に基づいて行を抽出する方法を紹介します。Pandasは大規模なデータセットを効率的に操作できる強力なツールで、フィルタリングや条件に基づいた行の選択が簡単に行えます。
基本的な行の抽出 - loc[]
の使用
DataFrameの特定の列が特定の値に一致する行を抽出する最も基本的な方法は、loc[]
を使うことです。
df.loc[df['column_name'] == value]
例えば、次のようなDataFrameがある場合:
import pandas as pd
df = pd.DataFrame({
'A': ['foo', 'bar', 'foo', 'bar'],
'B': [1, 2, 3, 4]
})
A
列が'foo'
である行を抽出するには次のようにします。
df.loc[df['A'] == 'foo']
このコードはA
列がfoo
の行のみを返します。
複数の条件での行抽出
複数の条件を使う場合、&
(AND)や|
(OR)を使って条件を組み合わせます。条件を組み合わせる際には、条件を括弧で囲む必要があります。
df.loc[(df['A'] == 'foo') & (df['B'] > 2)]
この例では、A
列がfoo
で、かつB
列が2より大きい行を抽出します。
isin()
を使った複数の値のチェック
特定の列が指定したリストに含まれている行を抽出するには、isin()
メソッドを使用します。
df.loc[df['A'].isin(['foo', 'bar'])]
このコードは、A
列の値が'foo'
または'bar'
の行を抽出します。
query()
によるフィルタリング
Pandasのquery()
メソッドを使うと、SQL風のクエリを用いて条件付きで行を抽出することができます。コードが直感的に読めるため、特に複雑な条件を扱う際に便利です。
df.query('A == "foo" and B > 2')
このクエリは、A
列がfoo
で、B
列が2より大きい行を選択します。
まとめ
Pandasのフィルタリング機能を使うと、特定の条件に基づいて簡単にDataFrameの行を抽出できます。loc[]
やisin()
、query()
など、さまざまな方法があり、データの構造や用途に応じて選択することが可能です。