web-dev-qa-db-ja.com

Pandas動作していない要素を置き換える

私はこの問題を調べましたが、ほとんどの質問はより複雑な代替品に関するものです。しかし、私の場合、テストダミーとして非常にシンプルなデータフレームを使用しています。

目的は、データフレーム内の任意の場所の文字列を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
11
dter

割り当て直す必要があります

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に設定されます

18
EdChum

これが「Pandas replace is not working」を検索したときのGoogleの最高の結果であることを考えると、次のことも言及したいと思います。

正規表現スイッチをオンにしない限り、replaceは完全な置換検索を行います。 regex = Trueを使用すると、部分的な置換も実行されます。

これを見つけるのに30分かかったので、うまくいけば次の人を30分救ってくれました。

30
user1761806

df.replace()を使用すると、新しい一時オブジェクトが作成されますが、変更はされません。次の2行のいずれかを使用して、dfを変更できます。

df = df.replace('white', np.nan)
df.replace('white', np.nan, inplace = True)
5
ysearka