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



>我有一个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 条件呢?

您可以将pandas.Series.fillna与移动的系列一起使用,而不是 for 循环以获得收盘价。

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

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

请注意,我假设price2price3具有相同的长度,并且您不妨在循环中迭代price3

最新更新