亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

枚舉 Pandas 數據框后,字典條目都相同

枚舉 Pandas 數據框后,字典條目都相同

呼如林 2023-03-16 17:42:37
我正在使用 enumerate 獲取每行的行號以用作image_id但它一直返回行的長度而不是索引。def get_detectron_format(self):  """Returns the dataset in the Detectron2 list(dict) format"""  csv = self.get_data_csv()  dataset_dicts = []  record = dict()  for i, (index, data) in enumerate(csv.iterrows()):    record['file_name'] = os.path.join(self.data_root, data['Path'])    record['image_id'] = i    record['height'] = data['Height']    record['width'] = data['Width']        objs = []    obj= {      'bbox': [data['Roi.X1'], data['Roi.Y1'], data['Roi.X2'], data['Roi.Y2']],      'bbox_mode': BoxMode.XYXY_ABS,      'category_id': data['Roi.X1'] - 1,      'iscrowd': 0    }      objs.append(obj)    record['annotations'] = objs    dataset_dicts.append(record)  return dataset_dicts當我打印出數據集中的第一項時:gtsr = GTSR_Dataset()dataset = gtsr.get_detectron_format()[0]print(dataset)我得到:{'file_name': '/content/drive/My Drive/Datasets/german_traffic_sign_recognition/Train/42/00042_00007_00029.png', 'image_id': 39208, 'height': 69, 'width': 68, 'annotations': [{'bbox': [7, 6, 62, 63],                  'bbox_mode': <BoxMode.XYXY_ABS: 0>,                  'category_id': 6,                  'iscrowd': 0}]}..image_id應該在哪里0。為什么是這樣?如何獲取行號(索引)?
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

字典在 for 循環(第 5 行record:)之前被初始化。同一條記錄被多次更新。這將需要在 for 循環內移動。record = dict()

完成后dataset_dicts.append(record),將附加相同的記錄地址,dataset_dicts因此基本上您有最后一條記錄的多個條目。


查看完整回答
反對 回復 2023-03-16
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

使用objs.append(obj.copy())這將存儲數據而不是id(obj)您的問題將得到解決。



查看完整回答
反對 回復 2023-03-16
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號