使用Python中的if-condition加速逐行循环

时间:2018-05-12 14:02:35

标签: python performance pandas loops

我有一个6百万行的数据集,列是: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 个答案:

答案 0 :(得分:3)

代替for循环,您可以将pandas.Series.fillna与已移位的系列一起用于收盘价。

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

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

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

相关问题