Python 将信息从CSV保存到文本
我有一个数据帧,如下所示:Python 将信息从CSV保存到文本,python,pandas,Python,Pandas,我有一个数据帧,如下所示: image_id x y w h x_center y_center img_height img_width lable 01 500 400 250 500 309.4 543.5 2500 4000 0 01 560 430 260 570 306.7 553.4 2200 3000 0 01 540 440
image_id x y w h x_center y_center img_height img_width lable
01 500 400 250 500 309.4 543.5 2500 4000 0
01 560 430 260 570 306.7 553.4 2200 3000 0
01 540 440 270 580 387.8 563.5 2700 2000 0
02 545 340 250 590 377.8 543.5 2100 2030 1
04 546 240 240 500 367.8 553.5 2300 2000 2
04 586 270 640 400 467.8 556.5 2400 1000 2
我需要为每个图像\u id
保存YOLO模型类型文本文件的这些信息。为此,我需要将信息另存为
labels x_center y_center w h
另外,在将信息保存到文本文件中时,我需要通过图像宽度(img\u width
)和图像高度(img\u height
)对x\u中心和高度进行规范化
我的审判
df=pd.read\u csv('data.csv'))
df_img_id=df.groupby('image_id'))
对于索引,df_img_id中的行:
img_w=行['img_宽度']
img_h=行['img_高度']
打开(f'{row['imgage_id']}.txt],'w+')作为f1:
ft.write()
f1.关闭()
在这一点上卡住了(我们可以如下实现。让我们先创建一个虚拟数据帧
将熊猫作为pd导入
随机输入
信息={
“图像id:['01','01','01','02','04','04'],
“x”:随机抽样(范围(500600),6),
“y”:随机样本(范围(200500),6),
“w”:随机样本(范围(200300),6),
“h”:随机样本(范围(400600),6),
“x_中心”:随机样本(范围(250460),6),
“y_中心”:随机样本(范围(250460),6),
“img_高度”:随机样本(范围(2100,3000),6),
“img_宽度”:随机样本(范围(11004000),6),
“标签”:[0,0,0,1,2,2]
}
df=pd.DataFrame(data=info)
df.head()
--------------------------
图像id x y w h x_中心y_中心img_高度img_宽度标签
0 01 561 435 290 449 303 318 2105 2806 0
1 01 583 447 265 427 394 421 2338 2047 0
2 01 520 417 262 592 429 395 2947 3388 0
3 02 516 415 214 470 455 319 2649 1594 1
4 04 522 386 204 514 343 394 2847 1770 2
接下来,我们将使用groupby
图像id对每一行进行迭代
df_image_id=df.groupby('image_id')#按id分组
对于_,df_图像_id中的行:
对于3;,行中的每一个。iterrows():#迭代相同id内的每个样本
img_w=每个['img_宽度']
img_h=每个['img_高度']
内容=[
每个[“标签”],
每个['x_中心']/每个['img_宽度'],
每个['y_中心']/每个['img_高度'],
每个['w']/每个['img_width'],
每个['h']/每个['img_高度']
]
id=每个['image\u id']
打开(f'{id}.txt',a')作为f1:
f1.写入(“.join(str(x)表示内容中的x)+'\n')
看起来“ft”是一个输入错误,应该是“f1”?在任何情况下,write方法都不会执行任何操作,除非您将要写入的内容传递给它。此外,使用“with”时不需要关闭文件,它会为您执行操作。是的,您是对的