我有一个600万行的数据集,列为:交易品种,时间戳,开盘价和收盘价.我运行以下循环,该循环很长,但是很简单(如果开盘价为nan,则从上一行获取收盘价):
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
与移位的Series一起使用,以得出收盘价.
price3['open price'].fillna(price3['close price'].shift(1), inplace=True)
这是矢量化的,因此应该比for循环快得多.
注意,我假设price2和price3具有相同的长度,并且您还可以在循环中遍历price3.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。