Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用For循环查找数据帧中的浮点值_Python_Pandas_Numpy_For Loop - Fatal编程技术网

Python 使用For循环查找数据帧中的浮点值

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

我有一个函数,我将遍历它以找到浮点数的第一个实例,然后打印“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.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
比较,这种比较非常有效,并且比Python
for
循环运行得更快

运行
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)]