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

我有一个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.

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...