【毎日Python】Pythonでデータフレームの条件に応じて値を変更する方法|mask,where

mask
こつこつPython
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'col1': ['a', 'a', 'b', 'b', 'a'],
    'col2': [2, 13, 5, 8, 20],
    'col3': [6, np.NaN, np.NaN, 12, 9]})
df

データフレームで、条件に一致する場合にだけ値を変更する方法です。
使用するのは、pandas.DataFrameのmaskメソッドです。
このようなデータフレームを用意します。

df['col2'].mask(df['col2']>5, 'Z')

第一引数に条件を指定します。
第二引数には、条件に合う場合に代入する値を指定します。
実行します。
条件に合う値が置き換わりました。

df['col3'].mask(df['col3'].isnull(), df['col2'])

null値を補完することもできます。
col3のNull値をcol2の値にしてみましょう。
実行します。
行1と2のNull値が置き換わりました。

df['col3'].mask(df['col3'].isnull(), df['col2'], inplace=True)

なお、元のデータフレームはそのままです。
元のデータフレームを置き換えたい場合は、引数inplaceにTrueを渡します。

df['col2'].where(df['col2']>5, 'Z')

また、似ているメソッドにwhereがあります。
こちらは、maskメソッドとは逆で、条件に合わない値のみ操作することができます。
実行します。
先ほどのmaskの結果と逆になりました。

関連メソッド

【毎日Python】Pythonでデータフレームの欠損値を置換する方法|fillna

【毎日Python】Pythonでデータフレームの欠損値を確認する方法|isnull

毎日Python】Pythonでデータフレームの要素を置換する方法|replace

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト