逻辑运算符Python two==在迭代数据帧中不起作用
我有一个数据帧,想选择两行,用一个自定义函数在它们之间插值。问题是我只看到一行,不明白为什么我的of语句不起作用。数据如下所示:逻辑运算符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
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,谢谢这个解决方案也很有效。但我喜欢两种方法,但只能选择一种。