有一个问题,来自导入/计算的数据的逻辑比较给出了误报。我知道数字格式/类型一定是一个问题,但是我不知道如何解决。示例显示,即使X1 == X2对于X1 我试图根据给定的坐标存储在数据框中找到重叠的矩形。我从导入的值计算了坐标(X1,X2,Y1,Y2)。由于此df中的每一行都是一个矩形,因此我正在使用下面的代码过滤我的主df,以便找到任何重叠的矩形,但是在测试数据中得到了意外的结果,如果X1 == X2,<运算符将为true。 我知道数字格式/类型一定存在一些问题,但是我不确定如何继续,我试图四舍五入数字(即使坐标只到小数点后一位)并将其显式转换为浮点数比较之前,但没有任何效果。 示例: 下面是显示导入/计算的df列中的相关数据的示例。 您可以看到,即使在这些情况下X1 == X2,对于X1 对于上面的示例,当我比较df中的数据时,我期望X1 for i in range(len(df)):
dftemp = df[(df.X1<=df.X1.iloc[i])&(df.X1.iloc[i]<df.X2)
&(df.Y1<=df.Y1.iloc[i])&(df.Y1.iloc[i]<df.Y2)]
dftemp = dftemp[df.index[i]!=dftemp.index]
df_res2 = df_res2.append(dftemp)
if len(dftemp) !=0:
df_res2=df_res2.append(df.iloc[i])
print("triggered at {} for{}".format(df.index[i],dftemp))
In[307]:df_stk.loc[5020][['X1','X2','Y1','Y2']]
Out[307]:
X1 1382.4
X2 1555.2
Y1 64.8
Y2 108
In[308]:df_stk.loc[7308][['X1','X2','Y1','Y2']]
Out[308]:
X1 1296
X2 1382.4
Y1 43.2
Y2 86.4
In[309]: df_stk.loc[5020].X1 < df_stk.loc[7308].X2
Out[309]: True
d1={'X1':1382.4,
'X2':1555.2,
'Y1':64.8,
'Y2' :108}
d2={'X1':1296,
'X2':1382.4,
'Y1':43.2,
'Y2' :86.4}
In[303]: df_test=pd.DataFrame([d1,d2],index=[5020,7308])
Out[303]:
X1 X2 Y1 Y2
5020 1382.4 1555.2 64.8 108.0
7308 1296.0 1382.4 43.2 86.4
In[304]: df_test.loc[5020].X1<df_test.loc[7308].X2
Out[304]: False