我有一个函数,将迭代遍历该函数以查找浮点数的第一个实例,然后打印“我们达到利润”。在以下情况下,我想从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.49
或np.close(df['WAP'], 8.49)
将为True
中的每个元素返回一个布尔数组(False
/ series
)。您可以使用它来过滤您的series
以获取所需的值:
df[np.close(df['WAP'], 8.49)]
这将返回
DataFrame
,其中仅包含WAP为8.49的行。