我有一个函数,将迭代遍历该函数以查找浮点数的第一个实例,然后打印“我们达到利润”。在以下情况下,我想从WAP列中找到8.49,然后停止查找。我收到错误消息:
对于x in Profit_Price:
TypeError:“ numpy.float64”对象不可迭代

profit_Price = round((Wap_price * 0.020) + Wap_price,2)

def profit_stop(x):

    for x in profit_Price:
        if x == 8.49:
            print('we hit profit')
    else:
        return x

#calls the above function 'profit_stop'
df['WAP'].apply(profit_stop)

最佳答案

如果您的目的是比较,则不必担心停止(除非您的DataFrame确实很大)。 pandas依赖numpy比较,该比较确实有效,并且比Python for循环运行得更快。

运行df['WAP'] == 8.49np.close(df['WAP'], 8.49)将为True中的每个元素返回一个布尔数组(False / series)。您可以使用它来过滤您的series以获取所需的值:

df[np.close(df['WAP'], 8.49)]


这将返回DataFrame,其中仅包含WAP为8.49的行。

10-08 11:46