私はこの問題を調べましたが、ほとんどの質問はより複雑な代替品に関するものです。しかし、私の場合、テストダミーとして非常にシンプルなデータフレームを使用しています。
目的は、データフレーム内の任意の場所の文字列をnanに置き換えることですが、これは機能していないようです(つまり、置き換えない;エラーは一切ありません)。別の文字列に置き換えようとしましたが、機能しません。例えば。
d = {'color' : pd.Series(['white', 'blue', 'orange']),
'second_color': pd.Series(['white', 'black', 'blue']),
'value' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace('white', np.nan)
出力はまだです:
color second_color value
0 white white 1
1 blue black 2
2 orange blue 3
割り当て直す必要があります
df = df.replace('white', np.nan)
またはparam inplace=True
を渡します:
In [50]:
d = {'color' : pd.Series(['white', 'blue', 'orange']),
'second_color': pd.Series(['white', 'black', 'blue']),
'value' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace('white', np.nan, inplace=True)
df
Out[50]:
color second_color value
0 NaN NaN 1.0
1 blue black 2.0
2 orange blue 3.0
ほとんどのpandas opsはコピーを返し、ほとんどのパラメーターはinplace
に設定されます。通常はデフォルトでFalse
に設定されます
これが「Pandas replace is not working」を検索したときのGoogleの最高の結果であることを考えると、次のことも言及したいと思います。
正規表現スイッチをオンにしない限り、replaceは完全な置換検索を行います。 regex = Trueを使用すると、部分的な置換も実行されます。
これを見つけるのに30分かかったので、うまくいけば次の人を30分救ってくれました。
df.replace()
を使用すると、新しい一時オブジェクトが作成されますが、変更はされません。次の2行のいずれかを使用して、dfを変更できます。
df = df.replace('white', np.nan)
df.replace('white', np.nan, inplace = True)