【Python】Pandasで特定のテキストを含む行を抽出する方法
PythonのPandasで、DataFrameから特定のテキストを含む行を抽出するには、str.contains()メソッドを使用します。本記事では、CSVファイルを読み込み、「BMW」という文字列を含む行だけを取り出す方法を、サンプルコードと実行結果とともにわかりやすく解説します。
使用するCSVファイル
今回の例では、以下のパスにあるCSVファイル(CarRecords.csv)を使用します。
C:\Users\amit_\Desktop\CarRecords.csv
手順1:CSVファイルを読み込んでDataFrameを作成する
まず、pd.read_csv()を使ってCSVファイルを読み込み、PandasのDataFrameを作成します。
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\CarRecords.csv")
手順2:str.contains()で特定のテキストを含む行を抽出する
次に、「BMW」というテキストを含む行を選択します。str.contains()は、指定した文字列が各セルに含まれているかどうかを判定し、True/FalseのSeriesを返します。これを条件としてDataFrameに渡すことで、該当する行のみを抽出できます。
dataFrame = dataFrame[dataFrame['Car'].str.contains('BMW')]
完全なサンプルコード
以下が全体のコードです。
import pandas as pd
# CSVファイルを読み込む
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame...\n", dataFrame)
# 「BMW」というテキストを含む行を抽出
dataFrame = dataFrame[dataFrame['Car'].str.contains('BMW')]
print("\n「BMW」を含む行の取得結果...\n", dataFrame)
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame ...
Car Place UnitsSold
0 Audi Bangalore 80
1 Porsche Mumbai 110
2 RollsRoyce Pune 100
3 BMW Delhi 95
4 Mercedes Hyderabad 80
5 Lamborghini Chandigarh 80
6 Audi Mumbai 100
7 Mercedes Pune 120
8 Lamborghini Delhi 100
「BMW」を含む行の取得結果...
Car Place UnitsSold
3 BMW Delhi 95
補足:覚えておくと便利なオプション
大文字・小文字を区別しない検索
case=Falseを指定すると、大文字・小文字を区別せずに検索できます。「BMW」「bmw」「Bmw」などもまとめて抽出したい場合に有効です。
dataFrame = dataFrame[dataFrame['Car'].str.contains('bmw', case=False)]
欠損値(NaN)を含む列の安全な処理
対象の列に欠損値(NaN)が含まれている場合、そのままではエラーが発生することがあります。na=Falseを指定すると、NaNをFalseとして扱い、エラーを回避できます。
dataFrame = dataFrame[dataFrame['Car'].str.contains('BMW', na=False)]
まとめ
Pandasで特定のテキストを含む行を抽出するには、df['列名'].str.contains('検索文字列')を条件として使うのが基本です。大文字・小文字を無視したい場合はcase=False、欠損値が含まれる可能性がある場合はna=Falseを組み合わせると、より堅牢なコードになります。部分一致ではなく前方一致や正規表現での抽出が必要な場合は、str.startswith()やregex=Trueオプションの活用も検討してみてください。
-
Python Pandasのeval()関数で行の合計を評価・計算する方法
eval()関数で行の合計を求める Pandasのeval()関数は、文字列で記述した数式をDataFrameに対して直接評価できる便利な機能です。これを利用すると、指定した複数の列の値を足し合わせた行ごとの合計を、新しい列として簡単に追加できます。 まずは、商品の在庫データを含むDataFrameを作成しましょう。 dataFrame = pd.DataFrame({Product: [SmartTV, ChromeCast, Speaker, Earphone], Opening_Stock: [300, 700, 1200, 1500]
-
Python Pandas入門 – データフレームから条件に合う行のサブセットを抽出する方法
Pandasのデータフレームから行のサブセット(一部の行)を取得するには、条件式を使ってデータを絞り込みます。この手法は「ブールインデックス参照」と呼ばれ、データ分析で最もよく使われる操作のひとつです。 使用するCSVファイル ここでは、Microsoft Excelで開いた次のようなCSVファイル(SalesData.csv)を例にします。車種名(Car)、登録価格(Reg_Price)、販売台数(Units)の3つの列を持つデータです。 CSVファイルをデータフレームとして読み込む まず、read_csv()メソッドを使って、CSVファイルのデータをPandasのデータフレームに読み込み