PythonのDataFrameで、特定の列が100以上や10未満など、指定条件に一致する行だけを抽出したい!
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import pandas as pd
df_before = pd.read_excel('input.xlsx')
df_after = df_before[df_before['売上'] >= 1000000 ]
#df_after = df_before[df_before['売上'] < 1000000]
#df_after = df_before[df_before['目標'] == '達成']
#df_after = df_before[df_before['目標'] != '達成']
df_after.to_excel('output.xlsx', index = None)
df_after = df_before[df_before['売上'] >= 1000000 ]
#df_after = df_before[df_before['売上'] < 1000000]
#df_after = df_before[df_before['目標'] == '達成']
#df_after = df_before[df_before['目標'] != '達成']
事前準備
- pandasのインストール
今回の本題とは直接関係ありませんが、エクセルファイルの読み込みをする際に「pandas」が必要になります。
pandasのインストール方法
pandasを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install pandas
※pandasを使用したことがある場合は、このインストール作業は不要です。
解説
指定条件に一致する行を抽出
数値で範囲指定
>>5.df_after = df_before[df_before[‘売上’] >= 1000000 ]
この一文で、「売上」列の値が100万以上の行だけを抽出することができます。
上記文は、
「df_before」の中から、
「df_before[‘売上’] >= 1000000」の条件に合うものだけを
「df_after」に代入する
という意味です。
【 抽出結果を入れる変数 = 元の変数名[元の変数名[‘対象の列名’]条件式] 】
文字列を指定
今度は文字列を指定して抽出してみましょう。
>>7.#df_after = df_before[df_before[‘目標’] == ‘達成’]
上記は、「目標」列が「達成」と等しいもののみ抽出する条件式です。数字ではなく文字列を対象とする場合は「’(クォーテーション)」で囲みます。
よく使う条件式
df_before[‘売上’] >= 1000000
→100万以上(100万も含む)
df_before[‘売上’] > 1000000
→100万を超える(100万は含まない)
df_before[‘売上’] <= 1000000
→100万以下(100万も含む)
df_before[‘売上’] < 1000000
→100万未満(100万は含まない)
df_before[‘目標’] == ‘達成’
→達成と等しい
df_before[‘目標’] != ‘達成’
→達成と等しくない(達成以外)
その他の解説
「read_excel」などは下記記事で解説しております。ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
抽出できない(元データのまま or タイトルのみになる)
条件指定が間違っている可能性があります。
条件式を見直してみましょう。また、指定の文字列・数値範囲が表の中に存在するかも確認してみてください。
まとめ
PythonのDataFrameで指定条件に一致する行を抽出する方法を解説いたしました。
今回紹介した方法は、簡単で使える方法かと思いますので、ぜひご活用ください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!