Skip to content

Pandasデータフレームで特定の列に特定の値を含んだ行を削除する

はじめに

Pandasデータフレームで特定の列に特定の値を含んだ行を削除して、残った行のみの新たなデータフレームを作成します。


やりたいこと

  • 以下のような表がある場合に、「出欠」の列の値が「欠席」になっている「Bさん」と「Dさん」の行を削除します。

    <削除前>

    <削除後>


実装ポイント

  • 削除したい語句が入っている行を削除する為に、削除したい語句が入ってい・な・い行を抽出します。


コード例

import pandas as pd

# Excelファイルをデータフレームとして読み込み
df = pd.read_excel(r"ファイル・パス") 

# 「出欠」の列の値が「欠席」になっていない行を選択
df_sakuzyo = df[df["出欠"]!= "欠席"] 


コード詳細

途中の状態を出力してみると、以下のようになっています。

print(df["出席"]!= "欠席")

0     True
1    False
2     True
3    False
4     True
Name: 出席, dtype: bool
print(df[df["出席"]!= "欠席"] )

    氏名  出席番号  数学(点)  英語(点)  理科(点)  社会(点)  国語(点)   出席
0  Aさん     1     80     77     90     90     80  NaN
2  Cさん     3     77     95     90     80     92  NaN
4  Eさん     5     80     70     95     92     82  NaN


コードの関数化

import pandas as pd
def delete_specific_row(pandas_df, target_column, target_word):

    # pandas_df 読み込んだデータフレーム (pandas.core.frame.DataFrame)
    # target_colum 削除対象の値が入っている列名(文字列)
    # output_file 削除対象の値(文字列)

    # 削除対象の値が入った行を削除したデータフレームをリターン
    return pandas_df[pandas_df[target_column] != target_word]

# 関数の使用例
import pandas as pd
df = pd.read_excel(r"ファイル・パス") 
df = delete_specific_row(df, "出欠", "欠席")