Pandas 熊猫中的loc使用矢量化逻辑还是for循环?

Pandas 熊猫中的loc使用矢量化逻辑还是for循环?,pandas,loc,Pandas,Loc,我使用loc功能访问熊猫中的行,如下所示: pdf.loc[pdf.a>2] 这是矢量化的吗?它比使用numpy好吗 pdf[pdf.a>2] 这个时间表明loc没有减速 testa = pd.DataFrame(np.arange(10000000),columns =['q']) %timeit testb = testa.loc[testa.q>6] %timeit testc = testa[testa.q>7] 我认为当您基于列执行条件更新时,loc[

我使用loc功能访问熊猫中的行,如下所示:

pdf.loc[pdf.a>2]
这是矢量化的吗?它比使用numpy好吗

pdf[pdf.a>2]

这个时间表明loc没有减速

testa = pd.DataFrame(np.arange(10000000),columns =['q'])
%timeit testb = testa.loc[testa.q>6] 
%timeit testc = testa[testa.q>7]


我认为当您基于列执行条件更新时,
loc[]
比for循环更好。
numpy
会更快,但随后您会丢失索引,这些索引非常有用,是熊猫固有的
pdf.to_numpy()[np.where(pdf.a>2)[0]
应该比
.loc
读得快一点,矢量化仅仅意味着for循环是在c级完成的。这大概可以在loc中完成。另一件我感到困惑的事情是,为什么loc命令使用[]而不是()。这大概意味着loc在做什么,我从来没有理解过。
1 loop, best of 3: 207 ms per loop
1 loop, best of 3: 208 ms per loop