Python pandas dataframe 特定行を削除する方法

こんにちはkisseです。
この前、”Python pandas DataFrameに1行ずつSeriesを追加する。“という記事を書きました。
その記事の投稿後、今度はDataFrameから特定条件で1行ずつ削除するというコードを書いたので、それを元にして記事書きます!

背景

データベースにSQLを投げて、結果をデータフレーム形式で取得します。
ちょっと面倒な条件での抽出が必要だったので、Pythonのコードで直接データ整形を行います。

import pandas as pd

data_frame = pd.DataFrame([['hoge', 'fuga'], ['hoge', 'fuga'], ['poge', 'fuga'], ['hoge', 'fuga']], columns=['columnA', 'columnB'])
data_frame


上記のコードとその結果では、1行だけ異なる値が格納されている行があります。
次のコードではcolumnA列に’poge’が入ってる行を削除します。

for i in range(len(data_frame)):
    if data_frame.ix[i, 'columnA'] == 'poge':
        data_frame = data_frame.drop(i)
data_frame


このコードではDataFrameの全ての行を探索して、’poge’が含まれている行を削除しています。
drop()メソッドに整数を渡すと、そのindexが振られている行が削除されます。
あとはお好みに応じて、

data_frame = data_frame.reset_index(drop = True)
data_frame

という風にしてあげるときれいにindexが振り直されます。

最後に

お疲れ様です。
簡単にDataFrameでの行削除をかきました。
まだまだPythonレベルが低いので、頑張りたいですね。
最後までありがとうございます!

あわせて読みたい