簡體   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