web-dev-qa-db-ja.com

Python Pandas-inplace = Trueを理解する

pandasライブラリには、次のステートメントのように、オブジェクトをインプレースで変更するオプションが何度もあります...

df.dropna(axis='index', how='all', inplace=True)

inplace=Trueが渡されたときとinplace=Falseが渡されたときのオブジェクトの処理方法と同様に、何が返されるのか興味があります。

すべての操作がinplace=Trueのときにselfを変更していますか?そして、inplace=Falsenew_df = selfのようにすぐに作成された新しいオブジェクトで、その後new_dfが返される場合

44
Aran Freel

inplace=Trueが渡されると、データはその場で名前が変更される(何も返されない)ので、次を使用します。

df.an_operation(inplace=True)

inplace=Falseが渡されると(これはデフォルト値であるため、必要ありません)、操作を実行してオブジェクトのコピーを返すため、以下を使用します。

df = df.an_operation(inplace=False) 

そう:

if inplace == False:
    Assign your result to a new variable
else
    No need to assign
57
ECH

私の使い方は

# Have to assign back to dataframe (because it is a new copy)
df = df.some_operation(inplace=False) 

または

# No need to assign back to dataframe (because it is on the same copy)
df.some_operation(inplace=True)

結論:

 if inplace is False
      Assign to a new variable;
 else
      No need to assign
29
Nabin

私は通常、numpyで使用します。

更新されたデータを同じ変数に保存したくない場合は、inplace = Trueを使用します

data["column1"].where(data["column1"]< 5, inplace=True)

これは同じです...

data["column1"] = data["column1"].where(data["column1"]< 5)
1
hyukkyulee