我有一个CSV文件(.txt),其中包含来自CNN的检测结果:
CSV文件示例:
background: -webkit-linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255, 1));
坐标文件示例:
filename,type,confidence,xmin,ymin,xmax,ymax
27cz1_SLRM_0, barrow,87, 128, 176, 176, 224
27cz1_SLRM_101, barrow,80, 480, 400, 512, 432
27cz1_SLRM_103, celtic_field,85, 0, 112, 96, 256
27cz1_SLRM_103, celtic_field,80, 256, 384, 384, 544
27cz1_SLRM_103, celtic_field,80, 160, 96, 304, 272
27cz1_SLRM_103, barrow,85, 416, 160, 464, 208
27cz1_SLRM_107, celtic_field,84, 96, 448, 224, 576
27cz1_SLRM_107, barrow,94, 256, 432, 304, 480
27cz1_SLRM_107, barrow,87, 128, 368, 176, 416
27cz1_SLRM_107, barrow,84, 64, 304, 112, 352
27cz1_SLRM_107, barrow,80, 64, 208, 96, 240
为了减少误报的次数,我想对类27cz1_SLRM_0, 179927.5, 475140.0
27cz1_SLRM_101, 183062.5, 476565.0
27cz1_SLRM_103, 183632.5, 476565.0
27cz1_SLRM_107, 184772.5, 476565.0
进行所有单次检测。
在上面的示例中,应该保留来自celtic_field
的{{1}}检测,但是应该删除来自celtic_field
的{{1}}检测。
作为进一步处理的一部分,CSV作为字典打开,并变成27cz1_SLRM_103
条目(见下文)。这工作正常,但我想包括以上内容。
celtic_field
答案 0 :(得分:0)
尝试一下:
df['count']=df.groupby(['filename','type']).transform('count')['confidence']
df=df[~((df['count']==1)&(df['type']=='celtic_field'))]
print(df)
filename type confidence xmin ymin xmax ymax count
0 27cz1_SLRM_0 barrow 87 128 176 176 224 1
1 27cz1_SLRM_101 barrow 80 480 400 512 432 1
2 27cz1_SLRM_103 celtic_field 85 0 112 96 256 3
3 27cz1_SLRM_103 celtic_field 80 256 384 384 544 3
4 27cz1_SLRM_103 celtic_field 80 160 96 304 272 3
5 27cz1_SLRM_103 barrow 85 416 160 464 208 1
7 27cz1_SLRM_107 barrow 94 256 432 304 480 4
8 27cz1_SLRM_107 barrow 87 128 368 176 416 4
9 27cz1_SLRM_107 barrow 84 64 304 112 352 4
10 27cz1_SLRM_107 barrow 80 64 208 96 240 4
答案 1 :(得分:0)
在你们许多人(尤其是Billy Bonaros)的帮助下,我找到了一个可行的解决方案:
# remove loose celtic_fields
df = pd.read_csv(output_location)
df['count'] = df.groupby(['filename','type']).transform('count')['confidence']
for i,row in df.iterrows():
if row['count']==1 and row['type']==' celtic_field':
df.drop(i, inplace=True)
df.to_csv('...\csv.txt')
# open output file
output_file = csv.DictReader(open('...\csv.txt'))
非常感谢!