Python

Python初心者向け:条件に応じて代入する値を変える方法を解説

スポンサーリンク


▶ この他にもデータ分析前の前処理の記事があります。

はじめに

前回は、値の変換の簡単な例を扱いました。今回は、条件に応じて代入する値を変えることを考えます。よく扱う処理なので、この機会にしっかり押さえておきましょう。やり方は主に次の2つの方法があります。

  • ブールインデックス参照を使う
  • where()メソッドを使う

データの準備

条件に応じて代入する値を変える例を紹介できるように、簡単なデータサンプルを用意しましょう。

import pandas as pd

df=pd.DataFrame({'A':['a','b','c','d','e','f','g','h'],
               'B':[-2,3,4,-5,-2,1,0,3]})
df

ブールインデックス参照を使う

ここでは、’B’列の値が負の時に10の値を代入することを考えましょう。’B’列が負の値になるのは、次のようにすると抽出できます。

df.loc[df['B']<0]

ただし、値を変えたいのは’B’列なので、次のようにする必要があります。

df.loc[df['B']<0,'B']=10
df

データフレーム全体に条件を適用したい場合は、where()メソッドかmask()メソッドを使う必要があります。

スポンサーリンク

where()メソッドを使う

今度は、where()メソッドを使う例です。こちらも簡単なコードです。’A’列が’f’であるものを、100に書き換えることを考えましょう。次のようにやります。

df['A'].where(df['A']!='f',100)

where()は、第一引数にbool値の要素を持つシリーズや配列を指定し、第二引数に置き換える値を指定します。すると、第一引数でbool値がTrueのものはそのまま、Falseのものは第二引数で指定した値に置き換わります。
※第二引数を指定しない場合は、Falseの要素はNaNになります。

また、上記の記述のままではdfは書き換わりません。dfを書き換えるには、オプションでinplaceを指定するか、再起代入をおこないます。

# オプションでinplaceを指定する
df['A'].where(df['A']!='f',100, inplace=True)
df
# 再起代入をする
df['A']=df['A'].where(df['A']!='f',100)
df
スポンサーリンク

まとめ

いかがでしたでしょうか?そんなに難しくないですよね。簡単なことですが、知らないとできないことなので、是非、押さえておいてください。whereで置き換えるときに、第一引数が「False」のときに第二引数で置き換わるので間違えないようにしましょう。

コメント

タイトルとURLをコピーしました