逻辑运算符 Python 两个 == 在迭代数据框中不起作用

Logical Operator Python two == does not work in iteration dataframe

我有一个数据框,想 select 两行用自定义函数在它们之间进行插值。问题是我只看到一行,不明白为什么我的声明不起作用。数据如下所示:

        DataPoint   Rank
1       -9.360001   1.0
2       -9.080002   2.0
3       -9.039993   3.0
4       -7.529999   4.0
5       -7.479996   5.0
...     ...     ...     ...     ...

我想插入例如在等级 2.0 和 3.0 之间。代码如下所示:

Rank = data[['DataPoint']].count().values[0]*(1-0.99)
check_int = isinstance(Rank, int)
if not check_int:
        #loop 
        for ind in data.index:
            if (data['DataPoint'][ind] == (2.0 and 3.0)):
                print(data['DataPoint'][ind], data['Rank'][ind])

作为输出我只收到:

-9.03999300000001 3.0

但不是另外

-9.080002 2.0

试试这个,看看它是否适合你:
基本上语句 (2.0 and 3.0) 只选择等级为 3.0 的行 你需要像我下​​面那样手动指定一个范围:

ank = data[['DataPoint']].count().values[0]*(1-0.99)
check_int = isinstance(Rank, int)
if not check_int:
        #loop 
        for ind in data.index: # Below line, picks ranks more than 2.0 but less than 3.0
            if (data['Rank'][ind] >= 2.0 and data['Rank'][ind] <= 3.0):
                print(data['DataPoint'][ind], data['Rank'][ind])

(2.0 and 3.0) 求值为 3.0,因为这是最后要求值的东西。这就是您缺少 2.0 的原因。

您可以将其更改为 in 以使其保持在一行中。

if data['Rank'][ind] in (2.0, 3.0):
    ...