Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 two==在迭代数据帧中不起作用_Python_Pandas_Dataframe_If Statement_Logical Operators - Fatal编程技术网

逻辑运算符Python two==在迭代数据帧中不起作用

逻辑运算符Python two==在迭代数据帧中不起作用,python,pandas,dataframe,if-statement,logical-operators,Python,Pandas,Dataframe,If Statement,Logical Operators,我有一个数据帧,想选择两行,用一个自定义函数在它们之间插值。问题是我只看到一行,不明白为什么我的of语句不起作用。数据如下所示: 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 ... ... ... ... ... Ran

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

        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
...     ...     ...     ...     ...
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])
我想在排名2.0和3.0之间进行插值。代码如下所示:

        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
...     ...     ...     ...     ...
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.039993000001 3.0

但不是另外

-9.0800002.0


试试这个,看看是否适合你: 基本上,语句2.0和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和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和3.0计算为3.0,因为这是最后一个要计算的内容。这就是你错过2.0的原因

您可以将此更改为in以使其保持在一条线上

if data['Rank'][ind] in (2.0, 3.0):
    ...
2.0和3.0计算为3.0,因为这是最后一个要计算的内容。这就是你错过2.0的原因

您可以将此更改为in以使其保持在一条线上

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

数据['DataPoint'][ind]==2.0和3.0相当于数据['DataPoint'][ind]==3.0。因为2.0和3.0被评估为3.0。数据['DataPoint'][ind]==2.0和3.0相当于数据['DataPoint'][ind]==3.0。因为2.0和3.0被评估为3.0。根据,请使用2.0,3.0而不是2.0,3.0,感谢此解决方案也能工作。但我喜欢这两种方法,但只能选择一种。根据,使用2.0、3.0而不是2.0、3.0,谢谢这个解决方案也很有效。但我喜欢两种方法,但只能选择一种。