我有一个csv文件,其中包含29列,如下所示:
此外,我还有一个包含一堆图像的文件夹。
此csv包含images文件夹中每个图像的标头和地面真点。它有29列。第一列是文件名,接下来的28列是14个面点的x和y坐标。
我的代码:
[QWE_234, QWE_789234 ...]
我想做的是-
将所有x除以图像的列数(列),然后将所有y除以图像的行数(行),然后从所有值中减去0.5。
我不确定如何从csv中获取所有X和Y,并进行必要的操作。
我如何完成这项任务?
谢谢。
答案 0 :(得分:1)
答案比较简单。本质上,您只需遍历各列,然后将所需的操作应用于各列。执行该操作不需要任何特殊功能。您可以将其写为向量化操作,将您的序列视为向量,并可以用标量除/减。如果要包括文件名列,则可以更改对列进行计数的方式。
all_X_cols = [i for i in csv_file.columns if "x" in i]
all_Y_cols = [i for i in csv_file.columns if "y" in i]
num_cols = len([i for i in csv_file.columns if i != "filename"])
num_rows = len(sv_file)
for x in all_X_cols:
csv_file[x] = (csv_file[x]/num_cols)-.5
for y in all_Y_cols:
csv_file[y] = (csv_file[y]/num_rows)-.5
答案 1 :(得分:0)
尝试其他方法:
for col in df.columns:
if (col[0]=='x'):
df[col] = np.where(df['filename'] == file, df[col] / cols, df[col])
else:
df[col] = np.where(df['filename'] == file, df[col] / rows, df[col])