【问题标题】:Speeding up row-by-row loop with if-condition in Python在 Python 中使用 if 条件加速逐行循环
【发布时间】:2018-10-22 17:46:03
【问题描述】:

我有一个 600 万行的数据集,列是:symboltimeStampopen priceclose price。我运行以下循环,虽然非常简单(如果open pricenan,则从上一行取close price):

for i in range(0,len(price2)):
    print(i)
    if np.isnan(price3.iloc[i,2]):
        price3.iloc[i,2]=price3.iloc[i-1,3]

如何加快这个循环?据我所知,我可以更改为apply(),但是如何将 if 条件包含在其中?

【问题讨论】:

    标签: python performance pandas loops


    【解决方案1】:

    您可以将pandas.Series.fillna 与移位系列一起用于收盘价,而不是 for 循环。

    price3['open price'].fillna(price3['close price'].shift(1), inplace=True)
    

    这是矢量化的,因此应该比你的 for 循环快得多。

    请注意,我假设 price2price3 具有相同的长度,您也可以在循环中迭代 price3

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多