pandas
のデータフレームへの書き込みでは、this answerとthis answerの2通りの方法があります。パンダのset_valueと=の相違点
我々は
df[r][c].set_value(r,c,some_value)
とdf.iloc[r][c] = some_value
の方法の方法を持っています。
違いは何ですか?どちらが速いの?いずれかのコピーですか?
pandas
のデータフレームへの書き込みでは、this answerとthis answerの2通りの方法があります。パンダのset_valueと=の相違点
我々は
df[r][c].set_value(r,c,some_value)
とdf.iloc[r][c] = some_value
の方法の方法を持っています。違いは何ですか?どちらが速いの?いずれかのコピーですか?
差は、代入演算子は、既存DataFrame
オブジェクトに値を代入しながらset_value
は、オブジェクトを返すであることです。代入演算子は、データを変更する一方
set_value
を呼び出した後、あなたは潜在的に(缶「参照」互いにDataFrame
オブジェクトのように、これは必ずしもあなたがデータのコピーを2つ持っていますという意味ではありません)2つのDataFrame
オブジェクトを持っています単一のDataFrame
オブジェクトです。
それはおそらく、そのユースケースのために最適化されているように割り当てアプローチは、データの中間のスライスを生成しながらは、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
set_value
の結果かもしれませんこの上コピーであってもよいが、documentationは(私には)本当に明確ではない:
戻り値:
フレーム:自分の投稿の答えパーDATAFRAME
ラベルのペアが含まれている場合は、データフレームを呼び出すへの参照になり、そうでない場合は、新しいオブジェクト
それはスピードの問題だように、それが見えます。 – pshep123