繁体   English   中英

如何根据索引然后根据条件选择数据帧的行?

[英]How to select rows of dataframe based on index then on condition?

我正在对肺结节图像执行斑点检测例程。 对于每个图像,斑点检测器将返回检测到的斑点及其坐标和半径的数组。 然后,我检查地面真相肺结节坐标是否在任何斑点内,并返回true或false(这将成为该过程下一阶段的训练标签)。

我遇到的问题是,对于某些图像,结节位于一个以上的斑点内,因此图像具有两个(或多个)真正的阳性检测结果,而不是一个。 因此,对于这些情况,我想找到最接近地面实况的斑点并将该单一斑点标记为真正的阳性。

但是,我正在努力以这种方式对数据帧进行切片,以便仅比较每个图像的阳性检测。 我的数据框是这样的:

                    Blob_Y  Blob_X     Blob_R  True_X  True_Y  Label
JPCLN001.npy 0       840.0   220.0  16.970563   817.0   346.0      0
             1       832.0   496.0  16.970563   817.0   346.0      0
             2       496.0   872.0  69.767869   805.0   483.5      1
             3       480.0   796.0  16.970563   805.0   483.5      1
             4       820.0   888.0  56.568542   817.0   346.0      0
JPCLN002.npy 5       840.0   220.0  16.970563   817.0   346.0      0
             6       832.0   496.0  16.970563   817.0   346.0      1
             7       824.0   256.0  30.169889   817.0   346.0      0
             8       824.0   172.0  16.970563   817.0   346.0      0
             9       820.0   888.0  56.568542   817.0   346.0      0

对于图像JPCLN001.npy我想选择标签等于1的行,然后为第2行和第3行从(True_X, True_Y)(Blob_X, Blob_Y)计算勾股距离。需要分配最接近真实坐标的Blob标记为1且另一个标记为假阳性并标记为0。

数据框中有四个图像需要执行此操作。

我尝试通过为每个图像选择相关行并将它们分配给新的数据帧,进行距离计算然后将这些行重新插入到原始数据帧中来进行操作,如下所示:

df = blobs.loc['JPCLN061.npy']
df = df[df['Label'] == 1]

df = df.assign(dist = np.sqrt((df['Blob_X']-df['True_X'])**2 + (df['Blob_Y']-df['True_Y'])**2))
df['Label'][df['dist'] == df['dist'].max()] = 0

df.drop(['dist'], inplace = True, axis = 1)

blobs.update(df)

blobs.update(df)不会更新原始数据帧(我认为是由于每个数据帧的索引之间不匹配)。 我的方法似乎也很麻烦,因此,如果有人可以帮助我做到这一点,那将是非常感谢,因为我整天都在努力!

作为一个快速的示例,如何:

df = blobs.loc['JPCLN061.npy']
df = df[df['Label'] == 1]
df = df.assign(dist = np.sqrt((df['Blob_X']-df['True_X'])**2 + (df['Blob_Y']- 
df['True_Y'])**2))
df = df.sort_values('dist', ascending=False)
blobs.loc[('JPCLN061.npy', df.index[0]), 'Label'] = 0

如果您发布代码来创建df,我们很乐意以更有效的方式帮助您!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM