在 Python 中使用 if 条件加速逐行循环
Posted
技术标签:
【中文标题】在 Python 中使用 if 条件加速逐行循环【英文标题】:Speeding up row-by-row loop with if-condition in Python 【发布时间】:2018-10-22 17:46:03 【问题描述】:我有一个 600 万行的数据集,列是:symbol
、timeStamp
、open price
和 close price
。我运行以下循环,虽然非常简单(如果open price
是nan
,则从上一行取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 循环快得多。
请注意,我假设 price2
和 price3
具有相同的长度,您也可以在循环中迭代 price3
。
【讨论】:
以上是关于在 Python 中使用 if 条件加速逐行循环的主要内容,如果未能解决你的问题,请参考以下文章