Pandasで、ある列の値が条件に合致したら、特定の列の値を書き換える方法

whereメソッドを第1引数に条件を指定して、Falseが返ってきたら第2引数に指定した値や配列で要素を書き換えることができる。

maskメソッドは第1引数の条件が逆で、Trueが返ってきた場合に書き換えを行う。

ifの分岐を書かなくても簡単に処理することができるので超便利。

利用シーン

– 国コードが「25」なら、国名に「日本」を書き込む

– 得点が「50」未満なら、分類に「C」を書き込む

あるいは生データに不備があり、条件に合ったトランザクションの値を書き換えないといけないなどで重宝する。

使い方

# whereの場合は"25"に合致しないのFalse、つまり合致する場合に"日本"を書き込む
df["国名"].where(df["国コード"] != "25", "日本")

# maskの場合は"25"に合致する(True)の場合に"日本"を書き込む
df["国名"].mask(df["国コード"] == "25", "日本")

合致しないなどでワンクッションかませなくても良いmaskメソッドの方が分かりやすい。

ちなみに引数のinplace=Trueを指定すれば、オブジェクトの内容を書き換えることも可能。

df["国名"].mask(df["国コード"] == "25", "日本",  inplace=True)

参考文献

このサイトの主
投稿を作成しました 115

関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る