パンダのset_value割り当て方法



Pandas Set_value Assignment Method



違いは、set_valueがオブジェクトを返すのに対し、代入演算子は既存のDataFrameオブジェクトに値を割り当てることです。

set_valueを呼び出した後、2つのDataFrameオブジェクトが存在する可能性があります(DataFrameオブジェクトは相互に「参照」できるため、これは必ずしもデータの2つのコピーがあることを意味するわけではありません)が、代入演算子は単一のDataFrameオブジェクトのデータを変更します。



set_valueはおそらくそのユースケースに最適化されているため、set_valueを使用する方が高速であるように見えますが、割り当てアプローチではデータの中間スライスが生成されます。

In [1]: import pandas as pd In [2]: import numpy as np In [3]: df=pd.DataFrame(np.random.rand(100,100)) In [4]: %timeit df[10][10]=7 The slowest run took 6.43 times longer than the fastest. This could mean that an intermediate result is being cached 10000 loops, best of 3: 89.5 µs per loop In [5]: %timeit df.set_value(10,10,11) The slowest run took 10.89 times longer than the fastest. This could mean that an intermediate result is being cached 100000 loops, best of 3: 3.94 µs per loop the result of set_value may be a copy, but the documentation is not really clear (to me) on this:

戻り値:



フレーム:DataFrame

ラベルペアが含まれている場合は、DataFrameの呼び出しを参照します。含まれていない場合は、新しいオブジェクトを参照します。