【问题标题】:Does loc in pandas use vectorised logic or a for loop?pandas 中的 loc 是使用矢量化逻辑还是 for 循环?
【发布时间】:2019-09-16 08:28:32
【问题描述】:

我使用以下 loc 函数访问 pandas 中的行:

pdf.loc[pdf.a>2]

这是矢量化的吗?是不是比使用 numpy 好

pdf[pdf.a>2]

【问题讨论】:

  • 我认为 loc[] 在您根据列进行条件更新时比 for 循环更好。
  • numpy 会更快,但是你会丢失索引,这些索引对熊猫来说非常有用且固有。 pdf.to_numpy()[np.where(pdf.a > 2)[0]] 应该比 .loc

标签: python pandas dataframe pandas-loc


【解决方案1】:

这个时间表明 loc 没有减速

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

1 loop, best of 3: 207 ms per loop
1 loop, best of 3: 208 ms per loop

【讨论】:

  • 再读一点,向量化只是意味着 for 循环是在 c 级别完成的。大概这可以在 loc 中完成。我感到困惑的另一件事是为什么 loc 命令使用 [ ] 而不是 ( )。据推测,这暗示了我从未理解过的 loc 正在做什么。
猜你喜欢
  • 1970-01-01
  • 2018-11-29
  • 2015-01-02
  • 2021-04-06
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2014-09-25
相关资源
最近更新 更多