在 Python 中使用 if 条件加速逐行循环

Posted

技术标签:

【中文标题】在 Python 中使用 if 条件加速逐行循环【英文标题】:Speeding up row-by-row loop with if-condition in Python 【发布时间】: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 条件包含在其中?

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于在 Python 中使用 if 条件加速逐行循环的主要内容,如果未能解决你的问题,请参考以下文章

Python3.7条件与循环

Shell脚本for循环逐行原样输出

加速插入 - 一次插入列表

python中IF及循环习题

python中循环语句

Go流程结构(if)