2017-04-26 148 views

回答

2

所不同的是set_value返回一个对象,而赋值操作符分配值到现有DataFrame对象。

调用set_value后,你将可能有2个DataFrame对象(这并不一定意味着你将有两个数据副本,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是不是真的清楚(我):

返回:

帧:数据帧

如果标签对包含,将参考调用数据帧,否则一个新的对象

相关问题