2017-07-13 4 views
1

次の簡単な例を見てみると:「?」pandas dataFrameで元のオブジェクトに作用しないのはなぜですか?

import pandas as pd 
l1 = [1,2,'?'] 
df = pd.DataFrame(l1) 
df.replace('?',3) 

なぜこれが代わるものではありません。データフレームdfで? dfが参照するオブジェクトは、replaceが呼び出されたときに影響を受けませんか?

私が書く場合:

df = df.replace('?',3) 

その後df.replaceは、の値を置き換えた新しいデータフレームを返しますか? with

私は、オブジェクトに作用する関数がオブジェクト自体を変更できない理由について混乱しています。

+1

それができます!しかし、開発者は、デフォルトでは、編集するのではなくコピーを返すべきであると判断しました。 IMO、これはより安全な賭けです。ただし、適切なパラメータを使用すると、オブジェクト自体を変更するために 'replace'を使うことができます。あなたは[** documentation **](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html) – piRSquared

答えて

3

あなたはinplace=True必要があります。

df.replace('?',3, inplace=True) 
print (df) 
    0 
0 1 
1 2 
2 3 
+0

Yupを見れば簡単に見つけることができます。ありがとう! –

関連する問題