アクサンの場合

Python3初心者が段々上達するログ

pandasで条件にあった値を持つ行を削除する場合

列Aにあるnという値を持つ行を削除したい

df A B C
0 k n n
1 n n n
2 n k k
... ... ... ...
1000 n m m
... ... ... ...

この1行目2行目に該当する行を削除したい時にどうするか。
もちろんこの簡単な例ではdf.drop([1,2,1000])でいける? まさかそんな話ではない。

方針

  1. Aにnという値を持つ行を削除する
  2. Aにn以外の値を持つ行を抽出する

方針1

正直わからんかった。df.drop()はindexの値をリストとして与えればうまく削除できる。
ただ, df[df.A == n]で得られたDataFrameからindexのリストを取得することはどこを見ても書いてなかったしそもそもできないのかもしれない。

過去にindexの値を取得するスクリプトを書いた気がするがそれはまた別の機会に。

方針2

df[df.A != n]

これでよい。削除する削除するという頭だとどうしてもdf[df.A == n]をdropすることばかりに頭がいくが, 逆に考えてn以外の値を持つ行を抽出する。そう考える。