numpyとpandasのwhereの挙動が反するように感じたので、共有します。
条件に応じて値を代入するメソッドにwhereとmaskがあります。
メソッドの詳細はこちらにございます。
(いつもお世話になっております
)
以下に適当な例を出してみます。
import numpy as np
import pandas as py
test = np.array([1,2,3])
この2を200に置換したいとします。
np.whereでやってみましょう。
>>> pd.Series(np.where(test == 2, 200, test))
0 1
1 200
2 3
dtype: int64
目的の結果が得られます。
では、pd.whereでは?
>>> pd.Series(test).where(test == 2, 200)
0 200
1 2
2 200
dtype: int64
残念です。目的とは逆の結果になりました…
np.whereの代わりにはpd.maskを使いましょう。
>>> pd.Series(np.where(test == 2, 200, test))
0 1
1 200
2 3
dtype: int64
np.whereとの挙動を合わせてほしいですね…