如何读取csv文件并将其值传递给函数参数

7bsow1i6  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(174)

我有一个csv文件,其中包含一列和如下所示的值:here
这个功能

def yolo_to_coco(x_center, y_center, w, h,  image_w, image_h):
  w = w * image_w
  h = h * image_h
  x1 = ((2 * x_center * image_w) - w)/2
  y1 = ((2 * y_center * image_h) - h)/2
  return [x1, y1, w, h]``

当我将值传递给此函数image_wimage_h时,我是从自己的函数传递的,它不在csv中

test = yolo_to_coco(53.854, 2912.798, 398.71, 57.202,1024,1024)

得到所需的结果

[-148993.02399999998, 2953417.7279999997, 408279.04, 58574.848]

我想从这个文件中获取每个值,并传递给这个函数,然后存储在另一个csv文件中。

kcrjzv8t

kcrjzv8t1#

你可以使用dataframe.apply(function)方法。用这个方法你可以把这个函数应用到每一行。让我们创建一个虚拟的df。

import pandas as pd
d = {'bbox': [[53.854, 2912.798, 398.71, 57.202],[31, 12,120, 20],[17, 72,170, 720]]}
df = pd.DataFrame(data=d)

让我们创建函数。第一个参数将是行值。我们将指定额外的2个参数(image_w,image_h)

def yolo_to_coco(bbox,  image_w, image_h):
    x_center, y_center, w, h = bbox
    w = w * image_w
    h = h * image_h
    x1 = ((2 * x_center * image_w) - w)/2
    y1 = ((2 * y_center * image_h) - h)/2
    return [x1, y1, w, h]

现在,我们可以将此函数应用于bbox列。您可以传递任何image_w、image_h值。它将创建一个Pandas。系列

df_coco_series = df["bbox"].apply(yolo_to_coco,image_w = 1024,image_h = 1024)

最后转换成Pandas.dataframe

df_coco = df_coco_series.to_frame()
print(df_coco)

相关问题