我遇到.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