我有一个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条件包含到其中? 最佳答案
代替for循环,您可以将pandas.Series.fillna
与移位序列一起用于收盘价。
price3['open price'].fillna(price3['close price'].shift(1), inplace=True)
这是矢量化的,所以应该比for循环快得多。
注意,我假设
price2
和price3
具有相同的长度,您也可以在循环中遍历price3
。