使用df.loc []不返回视图,在同一对象上完成操作

时间:2017-03-08 14:12:28

标签: python pandas

我遇到.loc[]

的问题

如果我这样做:

import pandas as pd
x = pd.DataFrame(zip(range(4), range(4)), columns=['a', 'b'])
print(x)
   a  b
0  0  0
1  1  1
2  2  2
3  3  3

q = x.loc[:, 'a']
q += 2
print(x)
   a  b
0  2  0
1  3  1
2  4  2
3  5  3

你可以看到我在q上的操作是在x上完成的,因为x.loc [:,'a']没有返回副本。

如果我这样做:

import pandas as pd
x = pd.DataFrame(zip(range(4), range(4)), columns=['a', 'b'])
print(x)
   a  b
0  0  0
1  1  1
2  2  2
3  3  3

q = x.loc[x.index, 'a']
q += 2
print(x)
   a  b
0  0  0
1  1  1
2  2  2
3  3  3
你可以看到

执行x.index而不是:返回一个副本,我对q的操作不会反映在x上。我觉得这是非常危险的,我想知道这是否有意或是一个错误:不像x.index

Jeff answer on .loc with good insight 还: from the doc

感谢您的帮助

加速: 当然:indexer应该比使用x.index快得多,这就是我倾向于使用它的原因:

import timeit
%timeit x.loc[:,'a']
10000 loops, best of 3: 25.1 µs per loop
%timeit x.loc[x.index,'a']
10000 loops, best of 3: 128 µs per loop

0 个答案:

没有答案