Python 使用For循环查找数据帧中的浮点值
我有一个函数,我将遍历它以找到浮点数的第一个实例,然后打印“we hit profit”。在下面的例子中,我想从WAP专栏中找到8.49并停止查找。我收到错误消息: 对于利润价格中的x: TypeError:“numpy.float64”对象不可编辑Python 使用For循环查找数据帧中的浮点值,python,pandas,numpy,for-loop,Python,Pandas,Numpy,For Loop,我有一个函数,我将遍历它以找到浮点数的第一个实例,然后打印“we hit profit”。在下面的例子中,我想从WAP专栏中找到8.49并停止查找。我收到错误消息: 对于利润价格中的x: 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.4
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)
wap=df['wap']
wap=[wap中x的浮动(x)]#请确保类型正确
对于wap中的x:
当x<8.49时:
打印(x)
打破
其他:
打印(‘我们成功了’)
打破
当接近8.49时,应该停止此操作。如果您的目的是比较,则不必担心停止(除非您的
数据帧非常庞大)pandas
依赖于numpy
比较,这种比较非常有效,并且比Pythonfor
循环运行得更快
运行df['WAP']==8.49
或np.close(df['WAP'],8.49)
将为系列中的每个元素返回一个布尔数组(True
/False
)。您可以使用它过滤系列
,以获得所需的值:
df[np.close(df['WAP'], 8.49)]
这将返回仅包含WAP为8.49的行的数据帧。我不确定您想做什么apply
分别运行每个元素上给定的函数,即-对于df['WAP']
中的每个数字num
,它将运行profit\u stop(num)
。没有办法在中间停止应用(除了提高<代码>异常/代码>),所以我应该如何将逻辑测试应用到数据文件中的WAP列。我是否需要从该列创建一个列表,然后对其进行迭代?在pandas.Series上的任何逻辑操作都是元素操作。试试df['WAP']==8.49
,看看会发生什么。然后尝试df[df['WAP']==8.49]
,尽管您最好使用df[np.isclose(df['WAP'],8.49)]
(因为浮点比较并不总是100%准确),我看到其中一个将返回真/假和行号。第二行返回WAP中包含8.49的整行。但当我使用var名称proit_Price时,我得到了“空数据帧”。利润高于价格。我试图在WAP列中找到第一行包含我的利润价格。我还希望我的WAP列不会总是包含我的利润价格,我会在WAP列中搜索低于我的利润价格的止损值。如果我们达到利润,价格显示第一行发生的情况。若我们并没有达到盈亏平衡,那个么显示我们达到止损点的那个一行。
df[np.close(df['WAP'], 8.49)]